Обработка Offers от сервера
This commit is contained in:
22
boot/boot.go
22
boot/boot.go
@@ -27,10 +27,12 @@ func Bootstrap() {
|
||||
port = "1001"
|
||||
}
|
||||
sfu.OnLocalICECandidate = OnLocalICECandidate
|
||||
sfu.OnServerOffer = OnServerOffer
|
||||
logger.LogInfoMessage("server started at x.x.x.x:" + port)
|
||||
http.ListenAndServe(":"+port, nil)
|
||||
}
|
||||
|
||||
// Коллбек для обработки новых ICE кандидатов от сервера к пиру
|
||||
func OnLocalICECandidate(roomID string, peerID string, candidate webrtc.ICECandidateInit) {
|
||||
room, exists := sfu.GetRoom(roomID)
|
||||
if !exists {
|
||||
@@ -52,6 +54,24 @@ func OnLocalICECandidate(roomID string, peerID string, candidate webrtc.ICECandi
|
||||
room.Server.Socket.WriteMessage(websocket.BinaryMessage, buffer.Bytes())
|
||||
}
|
||||
|
||||
// Обработка нового оффера от сервера для конкретного пира (при renegotiation)
|
||||
func OnServerOffer(roomID string, peerID string, offer webrtc.SessionDescription) {
|
||||
logger.LogInfoMessage("new server offer for peer " + peerID + " in room " + roomID)
|
||||
room, exists := sfu.GetRoom(roomID)
|
||||
if !exists {
|
||||
logger.LogWarnMessage("tried to send server offer to non existing room " + roomID)
|
||||
return
|
||||
}
|
||||
jsonOffer, _ := json.Marshal(offer)
|
||||
buffer := bytebuffer.Allocate(
|
||||
1 + 4 + len([]byte(roomID)) + 4 + len([]byte(peerID)) + 4 + len(jsonOffer),
|
||||
)
|
||||
buffer.Put(0x08)
|
||||
buffer.PutUint32(uint32(len([]byte(roomID))))
|
||||
buffer.PutBytes([]byte(roomID))
|
||||
buffer.PutUint32(uint32(len([]byte(peerID))))
|
||||
buffer.PutBytes([]byte(peerID))
|
||||
buffer.PutUint32(uint32(len([]byte(jsonOffer))))
|
||||
buffer.PutBytes([]byte(jsonOffer))
|
||||
buffer.Flip()
|
||||
room.Server.Socket.WriteMessage(websocket.BinaryMessage, buffer.Bytes())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user