feat:桌面共享支持

This commit is contained in:
MatrixSeven
2025-08-14 15:37:03 +08:00
parent e1d163f80c
commit 3b7fa7c653
14 changed files with 1787 additions and 454 deletions

View File

@@ -138,8 +138,33 @@ func (ws *WebRTCService) addClientToRoom(code string, client *WebRTCClient) {
if client.Role == "sender" {
room.Sender = client
// 如果发送方连接,检查是否有接收方在等待,通知接收方
if room.Receiver != nil {
log.Printf("通知接收方:发送方已连接")
peerJoinedMsg := &WebRTCMessage{
Type: "peer-joined",
From: client.ID,
Payload: map[string]interface{}{
"role": "sender",
},
}
room.Receiver.Connection.WriteJSON(peerJoinedMsg)
}
} else {
room.Receiver = client
// 如果接收方连接通知发送方可以开始建立P2P连接
if room.Sender != nil {
log.Printf("通知发送方接收方已连接可以开始建立P2P连接")
peerJoinedMsg := &WebRTCMessage{
Type: "peer-joined",
From: client.ID,
Payload: map[string]interface{}{
"role": "receiver",
},
}
room.Sender.Connection.WriteJSON(peerJoinedMsg)
}
// 如果接收方连接且有保存的offer立即发送给接收方
if room.LastOffer != nil {
log.Printf("向新连接的接收方发送保存的offer")