fix: resolve ghost peer duplication and service worker state persistence issues

This commit is contained in:
Timo
2026-04-22 11:10:31 +02:00
parent f1dae0ef4e
commit e410fc48c8
2 changed files with 34 additions and 2 deletions
+15
View File
@@ -216,6 +216,21 @@ io.on('connection', (socket) => {
socket.emit(EVENTS.ERROR, { message: "Room full" });
return;
}
// Peer Deduplication: Remove existing socket for the same peerId
for (const [sid, data] of room.peerData.entries()) {
if (data.peerId === peerId && sid !== socket.id) {
const oldSocket = io.sockets.sockets.get(sid);
if (oldSocket) {
oldSocket.leave(roomId);
socketToRoom.delete(sid);
}
room.peers.delete(sid);
room.peerIds.delete(sid);
room.peerData.delete(sid);
log('ROOM', `Deduplicated peer ${peerId} from room ${roomId}`);
}
}
}
socket.join(roomId);