feat(assist): centralized getAvailableRooms

This commit is contained in:
Taha Yassine Kraiem 2023-04-06 10:45:14 +01:00
parent 7b154f481f
commit 2d1aa4c952
5 changed files with 42 additions and 33 deletions

View file

@ -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) {

View file

@ -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
};

View file

@ -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) {

View file

@ -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) {

View file

@ -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
};