Добавление и обработка событий Peer_disconnected и Room_Delete

This commit is contained in:
set
2026-03-16 19:25:55 +02:00
parent 380299295d
commit e703ac22e6
4 changed files with 33 additions and 32 deletions

View File

@@ -144,6 +144,7 @@ func JoinWithOffer(roomID string, peerID string, offer webrtc.SessionDescription
func DeleteRoom(roomID string) error {
roomsMu.Lock()
room, exists := rooms[roomID]
server := room.Server
if !exists {
roomsMu.Unlock()
return ErrRoomNotFound
@@ -163,6 +164,8 @@ func DeleteRoom(roomID string) error {
cleanupForwardingState(roomID, p.PeerID)
}
OnRoomDelete(roomID, server)
return nil
}
@@ -218,7 +221,7 @@ func LeaveRoom(roomID string, peerID string) error {
return DeleteRoom(roomID)
}
// Опционально: renegotiation оставшимся peer после удаления треков/peer
// renegotiation оставшимся peer после удаления треков/peer
room.mu.RLock()
rest := make([]Peer, len(room.Peers))
copy(rest, room.Peers)

View File

@@ -3,6 +3,7 @@ package sfu
import (
"errors"
"g365sfu/logger"
connection "g365sfu/socket/struct"
"os"
"github.com/pion/interceptor"
@@ -21,10 +22,10 @@ var OnServerOffer func(roomID string, peerID string, offer webrtc.SessionDescrip
var OnLocalICECandidate func(roomID, peerID string, candidate webrtc.ICECandidateInit)
// Коллбек для обработки отключения пира (обрыв связи)
var OnPeerDisconnected func(roomID, peerID string)
var OnPeerDisconnected func(roomID, peerID string, server *connection.Connection)
// Коллбек для обработки удаления комнаты
var OnRoomDelete func(roomID string)
var OnRoomDelete func(roomID string, server *connection.Connection)
// Ошибки
var (