From 4873a299fcab5eec0a5148496d10fe27de23407e Mon Sep 17 00:00:00 2001 From: Alexander Zavorotynskiy Date: Fri, 2 Jun 2023 12:11:42 +0200 Subject: [PATCH] feat(backend): fixed issue in connect method --- assist/servers/websocket.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/assist/servers/websocket.js b/assist/servers/websocket.js index 9a81e1363..5b1babf4a 100644 --- a/assist/servers/websocket.js +++ b/assist/servers/websocket.js @@ -259,15 +259,27 @@ module.exports = { socket._connectedAt = new Date(); socket.peerId = socket.handshake.query.peerId; + let {connProjectKey, connSessionId, connTabId} = extractPeerId(socket.peerId); socket.roomId = extractRoomId(socket.peerId); - socket.tabId = extractTabId(socket.peerId); + socket.tabId = tabId; socket.identity = socket.handshake.query.identity; let {c_sessions, c_agents} = await sessions_agents_count(io, socket); if (socket.identity === IDENTITIES.session) { if (c_sessions > 0) { - debug && console.log(`session already connected, refusing new connexion`); - io.to(socket.id).emit(EVENTS_DEFINITION.emit.SESSION_ALREADY_CONNECTED); - return socket.disconnect(); + const rooms = await getAvailableRooms(io); + for (let roomId of rooms.keys()) { + let {projectKey} = extractPeerId(roomId); + if (projectKey === connProjectKey) { + const connected_sockets = await io.in(roomId).fetchSockets(); + for (let item of connected_sockets) { + if (item.tabId === connTabId) { + debug && console.log(`session already connected, refusing new connexion`); + io.to(socket.id).emit(EVENTS_DEFINITION.emit.SESSION_ALREADY_CONNECTED); + return socket.disconnect(); + } + } + } + } } extractSessionInfo(socket); if (c_agents > 0) {