diff --git a/assist/servers/websocket.js b/assist/servers/websocket.js index 4c4a657bb..c33322733 100644 --- a/assist/servers/websocket.js +++ b/assist/servers/websocket.js @@ -9,7 +9,8 @@ const { extractPayloadFromRequest, sortPaginate, getValidAttributes, - uniqueAutocomplete + uniqueAutocomplete, + getAvailableRooms } = require('../utils/helper'); const { IDENTITIES, @@ -35,11 +36,6 @@ const createSocketIOServer = function (server, prefix) { }); } - -const getAvailableRooms = async function () { - return io.sockets.adapter.rooms.keys(); -} - const respond = function (res, data) { res.statusCode = 200; res.setHeader('Content-Type', 'application/json'); @@ -50,7 +46,7 @@ const socketsList = async function (req, res) { debug && console.log("[WS]looking for all available sessions"); let filters = extractPayloadFromRequest(req); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey !== undefined) { @@ -77,7 +73,7 @@ const socketsListByProject = async function (req, res) { let _sessionId = extractSessionIdFromRequest(req); let filters = extractPayloadFromRequest(req); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey === _projectKey && (_sessionId === undefined || _sessionId === sessionId)) { @@ -105,7 +101,7 @@ const socketsLive = async function (req, res) { debug && console.log("[WS]looking for all available LIVE sessions"); let filters = extractPayloadFromRequest(req); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey} = extractPeerId(peerId); if (projectKey !== undefined) { @@ -133,7 +129,7 @@ const socketsLiveByProject = async function (req, res) { let _sessionId = extractSessionIdFromRequest(req); let filters = extractPayloadFromRequest(req); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey === _projectKey && (_sessionId === undefined || _sessionId === sessionId)) { @@ -164,7 +160,7 @@ const autocomplete = async function (req, res) { let filters = extractPayloadFromRequest(req); let results = []; if (filters.query && Object.keys(filters.query).length > 0) { - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey} = extractPeerId(peerId); if (projectKey === _projectKey) { diff --git a/assist/utils/helper.js b/assist/utils/helper.js index 22fcd0fd5..ebbf1f274 100644 --- a/assist/utils/helper.js +++ b/assist/utils/helper.js @@ -218,6 +218,9 @@ const uniqueAutocomplete = function (list) { } return _list; } +const getAvailableRooms = async function (io) { + return io.sockets.adapter.rooms.keys(); +} module.exports = { transformFilters, extractPeerId, @@ -230,5 +233,6 @@ module.exports = { objectToObjectOfArrays, extractPayloadFromRequest, sortPaginate, - uniqueAutocomplete + uniqueAutocomplete, + getAvailableRooms }; \ No newline at end of file diff --git a/ee/assist/servers/websocket-cluster.js b/ee/assist/servers/websocket-cluster.js index 78db35b20..c5a3b2231 100644 --- a/ee/assist/servers/websocket-cluster.js +++ b/ee/assist/servers/websocket-cluster.js @@ -20,7 +20,8 @@ const { extractProjectKeyFromRequest, extractSessionIdFromRequest, extractPayloadFromRequest, - getCompressionConfig + getCompressionConfig, + getAvailableRooms } = require('../utils/helper-ee'); const {createAdapter} = require("@socket.io/redis-adapter"); const {createClient} = require("redis"); @@ -69,9 +70,6 @@ const uniqueSessions = function (data) { return resArr; } -const getAvailableRooms = async function () { - return io.of('/').adapter.allRooms(); -} const respond = function (res, data) { let result = {data} @@ -89,7 +87,7 @@ const socketsList = async function (req, res) { let filters = await extractPayloadFromRequest(req, res); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey !== undefined) { @@ -116,7 +114,7 @@ const socketsListByProject = async function (req, res) { let _sessionId = extractSessionIdFromRequest(req); let filters = await extractPayloadFromRequest(req, res); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey === _projectKey && (_sessionId === undefined || _sessionId === sessionId)) { @@ -144,7 +142,7 @@ const socketsLive = async function (req, res) { debug && console.log("[WS]looking for all available LIVE sessions"); let filters = await extractPayloadFromRequest(req, res); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey} = extractPeerId(peerId); if (projectKey !== undefined) { @@ -173,7 +171,7 @@ const socketsLiveByProject = async function (req, res) { let _sessionId = extractSessionIdFromRequest(req); let filters = await extractPayloadFromRequest(req, res); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey === _projectKey && (_sessionId === undefined || _sessionId === sessionId)) { @@ -205,7 +203,7 @@ const autocomplete = async function (req, res) { let filters = await extractPayloadFromRequest(req); let results = []; if (filters.query && Object.keys(filters.query).length > 0) { - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey} = extractPeerId(peerId); if (projectKey === _projectKey) { diff --git a/ee/assist/servers/websocket.js b/ee/assist/servers/websocket.js index debab7cd4..3593e7f66 100644 --- a/ee/assist/servers/websocket.js +++ b/ee/assist/servers/websocket.js @@ -21,7 +21,8 @@ const { extractSessionIdFromRequest, extractPayloadFromRequest, getCompressionConfig, - getUWSCompressionConfig + getUWSCompressionConfig, + getAvailableRooms } = require('../utils/helper-ee'); const wsRouter = express.Router(); @@ -54,10 +55,6 @@ const createSocketIOServer = function (server, prefix) { } } -const getAvailableRooms = async function () { - return io.sockets.adapter.rooms.keys(); -} - const respond = function (res, data) { let result = {data} if (process.env.uws !== "true") { @@ -73,7 +70,7 @@ const socketsList = async function (req, res) { debug && console.log("[WS]looking for all available sessions"); let filters = await extractPayloadFromRequest(req, res); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey !== undefined) { @@ -100,7 +97,7 @@ const socketsListByProject = async function (req, res) { let _sessionId = extractSessionIdFromRequest(req); let filters = await extractPayloadFromRequest(req, res); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey === _projectKey && (_sessionId === undefined || _sessionId === sessionId)) { @@ -128,7 +125,7 @@ const socketsLive = async function (req, res) { debug && console.log("[WS]looking for all available LIVE sessions"); let filters = await extractPayloadFromRequest(req, res); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey} = extractPeerId(peerId); if (projectKey !== undefined) { @@ -156,7 +153,7 @@ const socketsLiveByProject = async function (req, res) { let _sessionId = extractSessionIdFromRequest(req); let filters = await extractPayloadFromRequest(req, res); let liveSessions = {}; - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey, sessionId} = extractPeerId(peerId); if (projectKey === _projectKey && (_sessionId === undefined || _sessionId === sessionId)) { @@ -187,7 +184,7 @@ const autocomplete = async function (req, res) { let filters = await extractPayloadFromRequest(req); let results = []; if (filters.query && Object.keys(filters.query).length > 0) { - let rooms = await getAvailableRooms(); + let rooms = await getAvailableRooms(io); for (let peerId of rooms) { let {projectKey} = extractPeerId(peerId); if (projectKey === _projectKey) { @@ -215,7 +212,13 @@ const findSessionSocketId = async (io, peerId) => { async function sessions_agents_count(io, socket) { let c_sessions = 0, c_agents = 0; - if (io.sockets.adapter.rooms.get(socket.peerId)) { + const rooms = io.sockets.adapter.rooms; + debug && console.log("----rooms from adapter:"); + debug && console.log(rooms); + const rooms2 = await getAvailableRooms(io); + debug && console.log("----rooms from getRooms"); + debug && console.log(rooms2); + if (rooms.get(socket.peerId)) { const connected_sockets = await io.in(socket.peerId).fetchSockets(); for (let item of connected_sockets) { diff --git a/ee/assist/utils/helper-ee.js b/ee/assist/utils/helper-ee.js index db8a66eb1..0b6ad8156 100644 --- a/ee/assist/utils/helper-ee.js +++ b/ee/assist/utils/helper-ee.js @@ -169,10 +169,18 @@ const getUWSCompressionConfig = function () { } return compression; } +const getAvailableRooms = async function (io) { + if (process.env.redis === "true") { + return io.of('/').adapter.allRooms(); + } else { + return helper.getAvailableRooms(io); + } +} module.exports = { extractProjectKeyFromRequest, extractSessionIdFromRequest, extractPayloadFromRequest, getCompressionConfig, - getUWSCompressionConfig + getUWSCompressionConfig, + getAvailableRooms }; \ No newline at end of file