diff --git a/cmd/main_test.go b/cmd/main_test.go index 6f43b944..3e007da3 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -106,6 +106,32 @@ func initClient(t *testing.T, host string) (conn *websocket.Conn, roomID chan st return cws.EmptyPacket }) + // Request Offer routing + client.Receive("requestOffer", func(resp cws.WSPacket) cws.WSPacket { + log.Println("Frontend received requestOffer") + peerConnection, err = webrtc.NewPeerConnection(webrtcconfig) + if err != nil { + t.Fatalf("%v", err) + } + + log.Println("Recreating offer") + offer, err := peerConnection.CreateOffer(nil) + if err != nil { + t.Fatalf("%v", err) + } + + log.Println("Set localDesc") + err = peerConnection.SetLocalDescription(offer) + if err != nil { + panic(err) + } + log.Println("return offer", offer) + return cws.WSPacket{ + ID: "initwebrtc", + Data: gamertc.Encode(offer), + } + }) + time.Sleep(time.Second * 3) fmt.Println("Sending start...") @@ -252,6 +278,32 @@ func initClient2(t *testing.T, host string, remoteRoomID string) (conn *websocke return cws.EmptyPacket }) + // Request offer browser + client.Receive("requestOffer", func(resp cws.WSPacket) cws.WSPacket { + log.Println("Frontend received requestOffer") + peerConnection, err = webrtc.NewPeerConnection(webrtcconfig) + if err != nil { + t.Fatalf("%v", err) + } + + log.Println("Recreating offer") + offer, err := peerConnection.CreateOffer(nil) + if err != nil { + t.Fatalf("%v", err) + } + + log.Println("Set localDesc") + err = peerConnection.SetLocalDescription(offer) + if err != nil { + panic(err) + } + log.Println("return offer", offer) + return cws.WSPacket{ + ID: "initwebrtc", + Data: gamertc.Encode(offer), + } + }) + time.Sleep(time.Second * 3) fmt.Println("Sending start...") diff --git a/handler/overlord.go b/handler/overlord.go index 08de552e..02d0687f 100644 --- a/handler/overlord.go +++ b/handler/overlord.go @@ -23,7 +23,8 @@ func NewOverlordClient(oc *websocket.Conn) *OverlordClient { } oclient := &OverlordClient{ - Client: cws.NewClient(oc), + Client: cws.NewClient(oc), + peerconnections: map[string]*webrtc.WebRTC{}, } return oclient } @@ -126,9 +127,9 @@ func (s *Session) bridgeConnection(serverID string, gameName string, roomID stri Data: "", }) - log.Println("Sending offer to overlord to relay message to target host", resp.TargetHostID) // Ask overlord to relay SDP packet to serverID resp.TargetHostID = serverID + log.Println("Sending offer to overlord to relay message to target host", resp.TargetHostID, "with payload", resp) remoteTargetSDP := s.OverlordClient.SyncSend(resp) log.Println("Got back remote host SDP, sending to browser") // Send back remote SDP of remote server to browser