diff --git a/assist/servers/websocket.js b/assist/servers/websocket.js index dc420aea1..8dce5d459 100644 --- a/assist/servers/websocket.js +++ b/assist/servers/websocket.js @@ -266,6 +266,9 @@ module.exports = { let {projectKey: connProjectKey, sessionId: connSessionId, tabId:connTabId} = extractPeerId(socket.handshake.query.peerId); socket.peerId = socket.handshake.query.peerId; socket.roomId = extractRoomId(socket.peerId); + if (connTabId === null) { + connTabId = "back-compatibility"; + } socket.tabId = connTabId; socket.identity = socket.handshake.query.identity; debug && console.log(`connProjectKey:${connProjectKey}, connSessionId:${connSessionId}, connTabId:${connTabId}, roomId:${socket.roomId}`); @@ -338,6 +341,10 @@ module.exports = { debug && console.log('Ignoring update event.'); return } + // Back compatibility (add top layer with meta information) + if (args[0].meta === undefined) { + args[0] = {meta: {tabId: socket.tabId}, data: args[0]}; + } Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); socket.to(socket.roomId).emit(EVENTS_DEFINITION.emit.UPDATE_EVENT, args[0]); // Update sessionInfo for all sessions (TODO: rewrite this) @@ -369,10 +376,9 @@ module.exports = { socket.to(socket.roomId).emit(eventName, args[0]); } else { debug && console.log(`received event:${eventName}, from:${socket.identity}, sending message to session of room:${socket.roomId}`); - // TODO: new message structure: {meta: {tabId: string::id}, data: xxx -> args[0]} + // Back compatibility (add top layer with meta information) if (args[0].meta === undefined) { - debug && console.log(`received event:${eventName}, from:${socket.identity}, but message structure is wrong, stopping onAny.`); - return + args[0] = {meta: {tabId: socket.tabId}, data: args[0]}; } let socketId = await findSessionSocketId(io, socket.roomId, args[0].meta.tabId); if (socketId === null) { diff --git a/ee/assist/servers/websocket-cluster.js b/ee/assist/servers/websocket-cluster.js index f669acb7a..b68654a8a 100644 --- a/ee/assist/servers/websocket-cluster.js +++ b/ee/assist/servers/websocket-cluster.js @@ -316,6 +316,10 @@ module.exports = { let {projectKey: connProjectKey, sessionId: connSessionId, tabId:connTabId} = extractPeerId(socket.handshake.query.peerId); socket.peerId = socket.handshake.query.peerId; socket.roomId = extractRoomId(socket.peerId); + // Set default tabId for back compatibility + if (connTabId === null) { + connTabId = "back-compatibility" + } socket.tabId = connTabId; socket.identity = socket.handshake.query.identity; debug && console.log(`connProjectKey:${connProjectKey}, connSessionId:${connSessionId}, connTabId:${connTabId}, roomId:${socket.roomId}`); @@ -389,6 +393,10 @@ module.exports = { debug && console.log('Ignoring update event.'); return } + // Back compatibility (add top layer with meta information) + if (args[0].meta === undefined) { + args[0] = {meta: {tabId: socket.tabId}, data: args[0]}; + } Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); socket.to(socket.roomId).emit(EVENTS_DEFINITION.emit.UPDATE_EVENT, args[0]); // Update sessionInfo for all sessions (TODO: rewrite this) @@ -420,9 +428,9 @@ module.exports = { socket.to(socket.roomId).emit(eventName, args[0]); } else { debug && console.log(`received event:${eventName}, from:${socket.identity}, sending message to session of room:${socket.roomId}`); + // Back compatibility (add top layer with meta information) if (args[0].meta === undefined) { - debug && console.log(`received event:${eventName}, from:${socket.identity}, but message structure is wrong, stopping onAny.`); - return + args[0] = {meta: {tabId: socket.tabId}, data: args[0]}; } let socketId = await findSessionSocketId(io, socket.roomId, args[0].meta.tabId); if (socketId === null) { diff --git a/ee/assist/servers/websocket.js b/ee/assist/servers/websocket.js index 6520d080c..ae328ed1d 100644 --- a/ee/assist/servers/websocket.js +++ b/ee/assist/servers/websocket.js @@ -286,6 +286,10 @@ module.exports = { let {projectKey: connProjectKey, sessionId: connSessionId, tabId:connTabId} = extractPeerId(socket.handshake.query.peerId); socket.peerId = socket.handshake.query.peerId; socket.roomId = extractRoomId(socket.peerId); + // Set default tabId for back compatibility + if (connTabId === null) { + connTabId = "back-compatibility" + } socket.tabId = connTabId; socket.identity = socket.handshake.query.identity; debug && console.log(`connProjectKey:${connProjectKey}, connSessionId:${connSessionId}, connTabId:${connTabId}, roomId:${socket.roomId}`); @@ -358,6 +362,10 @@ module.exports = { debug && console.log('Ignoring update event.'); return } + // Back compatibility (add top layer with meta information) + if (args[0].meta === undefined) { + args[0] = {meta: {tabId: socket.tabId}, data: args[0]}; + } Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); socket.to(socket.roomId).emit(EVENTS_DEFINITION.emit.UPDATE_EVENT, args[0]); // Update sessionInfo for all sessions (TODO: rewrite this) @@ -388,9 +396,9 @@ module.exports = { socket.to(socket.roomId).emit(eventName, args[0]); } else { debug && console.log(`received event:${eventName}, from:${socket.identity}, sending message to session of room:${socket.peerId}`); + // Back compatibility (add top layer with meta information) if (args[0].meta === undefined) { - debug && console.log(`received event:${eventName}, from:${socket.identity}, but message structure is wrong, stopping onAny.`); - return + args[0] = {meta: {tabId: socket.tabId}, data: args[0]}; } let socketId = await findSessionSocketId(io, socket.roomId, args[0].meta.tabId); if (socketId === null) {