mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-07-22 09:37:09 +00:00
Fix bug, not use async when sending back sdp to browser
This commit is contained in:
parent
80ca5bdd97
commit
1c26d12805
2 changed files with 16 additions and 7 deletions
22
main.go
22
main.go
|
|
@ -131,11 +131,13 @@ func initRoom(roomID, gameName string) string {
|
|||
// TODO: If we remove sessions from room anytime a session is closed, we can check if the sessions list is empty or not.
|
||||
func isRoomRunning(roomID string) bool {
|
||||
// If no roomID is registered
|
||||
fmt.Println("rooms list ", rooms)
|
||||
if _, ok := rooms[roomID]; !ok {
|
||||
return false
|
||||
}
|
||||
|
||||
// If there is running session
|
||||
fmt.Println("Running session", len(rooms[roomID].rtcSessions))
|
||||
for _, s := range rooms[roomID].rtcSessions {
|
||||
if !s.IsClosed() {
|
||||
return true
|
||||
|
|
@ -151,6 +153,7 @@ func startSession(webRTC *webrtc.WebRTC, gameName string, roomID string, playerI
|
|||
// If the roomID is empty,
|
||||
// or the roomID doesn't have any running sessions (room was closed)
|
||||
// we spawn a new room
|
||||
log.Println("Is Room Running", isRoomRunning(roomID))
|
||||
if roomID == "" || !isRoomRunning(roomID) {
|
||||
roomID = initRoom(roomID, gameName)
|
||||
isNewRoom = true
|
||||
|
|
@ -412,19 +415,24 @@ func bridgeConnection(session *Session, serverID string, gameName string, roomID
|
|||
// Ask overlord to relay SDP packet to serverID
|
||||
resp.TargetHostID = serverID
|
||||
remoteTargetSDP := oclient.syncSend(resp)
|
||||
log.Println("Got back remote host SDP, sending to browser", remoteTargetSDP.Data)
|
||||
log.Println("Got back remote host SDP, sending to browser")
|
||||
// Send back remote SDP of remote server to browser
|
||||
client.syncSend(WSPacket{
|
||||
//client.syncSend(WSPacket{
|
||||
//ID: "sdp",
|
||||
//Data: remoteTargetSDP.Data,
|
||||
//})
|
||||
client.send(WSPacket{
|
||||
ID: "sdp",
|
||||
Data: remoteTargetSDP.Data,
|
||||
})
|
||||
}, nil)
|
||||
log.Println("Init session done, start game on target host")
|
||||
|
||||
oclient.syncSend(WSPacket{
|
||||
ID: "start",
|
||||
Data: gameName,
|
||||
RoomID: roomID,
|
||||
PlayerIndex: playerIndex,
|
||||
ID: "start",
|
||||
Data: gameName,
|
||||
TargetHostID: serverID,
|
||||
RoomID: roomID,
|
||||
PlayerIndex: playerIndex,
|
||||
})
|
||||
log.Println("Game is started on remote host")
|
||||
}
|
||||
|
|
|
|||
1
static/js/ws.js
vendored
1
static/js/ws.js
vendored
|
|
@ -27,6 +27,7 @@ conn.onmessage = e => {
|
|||
case "sdp":
|
||||
log("Got remote sdp");
|
||||
pc.setRemoteDescription(new RTCSessionDescription(JSON.parse(atob(d["data"]))));
|
||||
//conn.send(JSON.stringify({"id": "sdpdon", "packet_id": d["packet_id"]}));
|
||||
break;
|
||||
case "requestOffer":
|
||||
curPacketID = d["packet_id"];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue