Api v1.15.0 (#1601)

* refactor(assist): cleaned code
* refactor(assist): enhanced get-live-session
This commit is contained in:
Kraiem Taha Yassine 2023-11-01 03:58:32 +01:00 committed by GitHub
parent 62b8e4e396
commit c95a5f4254
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 56 additions and 75 deletions

View file

@ -23,6 +23,7 @@ const {
socketsList,
socketsListByProject,
socketsLiveByProject,
socketsLiveBySession,
autocomplete
} = require('../utils/httpHandlers');
@ -75,7 +76,7 @@ wsRouter.post(`/sockets-live`, socketsLive);
wsRouter.get(`/sockets-live/:projectKey/autocomplete`, autocomplete);
wsRouter.get(`/sockets-live/:projectKey`, socketsLiveByProject);
wsRouter.post(`/sockets-live/:projectKey`, socketsLiveByProject);
wsRouter.get(`/sockets-live/:projectKey/:sessionId`, socketsLiveByProject);
wsRouter.get(`/sockets-live/:projectKey/:sessionId`, socketsLiveBySession);
module.exports = {
wsRouter,
@ -85,29 +86,6 @@ module.exports = {
io.on('connection', (socket) => onConnect(socket));
console.log("WS server started");
setInterval(async (io) => {
try {
let count = 0;
const rooms = await getAvailableRooms(io);
console.log(` ====== Rooms: ${rooms.size} ====== `);
const arr = Array.from(rooms);
const filtered = arr.filter(room => !room[1].has(room[0]));
for (let i of filtered) {
let {projectKey, sessionId} = extractPeerId(i[0]);
if (projectKey !== null && sessionId !== null) {
count++;
}
}
console.log(` ====== Valid Rooms: ${count} ====== `);
if (debug_log) {
for (let item of filtered) {
console.log(`Room: ${item[0]} connected: ${item[1].size}`);
}
}
} catch (e) {
console.error(e);
}
}, 30000, io);
socketConnexionTimeout(io);
},
@ -115,6 +93,7 @@ module.exports = {
socketsList,
socketsListByProject,
socketsLive,
socketsLiveByProject
socketsLiveByProject,
socketsLiveBySession
}
};

View file

@ -132,6 +132,43 @@ const socketsLiveByProject = async function (req, res) {
respond(res, _sessionId === undefined ? sortPaginate(sessions, filters) : sessions.length > 0 ? sessions[0] : null);
}
const socketsLiveBySession = async function (req, res) {
let io = getServer();
debug_log && console.log("[WS]looking for LIVE session");
let _projectKey = extractProjectKeyFromRequest(req);
let _sessionId = extractSessionIdFromRequest(req);
if (_sessionId === undefined) {
return respond(res, null);
}
let filters = await extractPayloadFromRequest(req, res);
let withFilters = hasFilters(filters);
let liveSessions = new Set();
const sessIDs = new Set();
let connected_sockets = await io.in(_projectKey + '-' + _sessionId).fetchSockets();
for (let item of connected_sockets) {
if (item.handshake.query.identity === IDENTITIES.session) {
if (withFilters) {
if (item.handshake.query.sessionInfo &&
isValidSession(item.handshake.query.sessionInfo, filters.filter) &&
!sessIDs.has(item.handshake.query.sessionInfo.sessionID)
) {
liveSessions.add(item.handshake.query.sessionInfo);
sessIDs.add(item.handshake.query.sessionInfo.sessionID);
}
} else {
if (!sessIDs.has(item.handshake.query.sessionInfo.sessionID)) {
liveSessions.add(item.handshake.query.sessionInfo);
sessIDs.add(item.handshake.query.sessionInfo.sessionID);
}
}
}
}
let sessions = Array.from(liveSessions);
respond(res, sessions.length > 0 ? sessions[0] : null);
}
const autocomplete = async function (req, res) {
let io = getServer();
debug_log && console.log("[WS]autocomplete");
@ -160,5 +197,6 @@ module.exports = {
socketsList,
socketsListByProject,
socketsLiveByProject,
socketsLiveBySession,
autocomplete
}

View file

@ -15,5 +15,7 @@ servers/sourcemaps-server.js
/utils/HeapSnapshot.js
/utils/helper.js
/utils/assistHelper.js
/utils/httpHandlers.js
/utils/socketHandlers.js
.local
*.mmdb
*.mmdb

View file

@ -3,6 +3,8 @@ rm -rf ./utils/health.js
rm -rf ./utils/HeapSnapshot.js
rm -rf ./utils/helper.js
rm -rf ./utils/assistHelper.js
rm -rf ./utils/httpHandlers.js
rm -rf ./utils/socketHandlers.js
rm -rf servers/peerjs-server.js
rm -rf servers/sourcemaps-handler.js

View file

@ -94,7 +94,7 @@ if (process.env.uws !== "true") {
uapp.get(`${PREFIX}/${P_KEY}/sockets-live/:projectKey/autocomplete`, uWrapper(socket.handlers.autocomplete));
uapp.get(`${PREFIX}/${P_KEY}/sockets-live/:projectKey`, uWrapper(socket.handlers.socketsLiveByProject));
uapp.post(`${PREFIX}/${P_KEY}/sockets-live/:projectKey`, uWrapper(socket.handlers.socketsLiveByProject));
uapp.get(`${PREFIX}/${P_KEY}/sockets-live/:projectKey/:sessionId`, uWrapper(socket.handlers.socketsLiveByProject));
uapp.get(`${PREFIX}/${P_KEY}/sockets-live/:projectKey/:sessionId`, uWrapper(socket.handlers.socketsLiveBySession));
socket.start(uapp);

View file

@ -25,6 +25,7 @@ const {
socketsList,
socketsListByProject,
socketsLiveByProject,
socketsLiveBySession,
autocomplete
} = require('../utils/httpHandlers');
@ -89,7 +90,7 @@ wsRouter.post(`/sockets-live`, socketsLive);
wsRouter.get(`/sockets-live/:projectKey/autocomplete`, autocomplete);
wsRouter.get(`/sockets-live/:projectKey`, socketsLiveByProject);
wsRouter.post(`/sockets-live/:projectKey`, socketsLiveByProject);
wsRouter.get(`/sockets-live/:projectKey/:sessionId`, socketsLiveByProject);
wsRouter.get(`/sockets-live/:projectKey/:sessionId`, socketsLiveBySession);
module.exports = {
wsRouter,
@ -99,34 +100,13 @@ module.exports = {
io.on('connection', (socket) => onConnect(socket));
console.log("WS server started");
setInterval(async (io) => {
try {
const rooms = await getAvailableRooms(io);
let validRooms = [];
console.log(` ====== Rooms: ${rooms.size} ====== `);
for (let i of rooms) {
let {projectKey, sessionId} = extractPeerId(i);
if (projectKey !== undefined && sessionId !== undefined) {
validRooms.push(i);
}
}
console.log(` ====== Valid Rooms: ${validRooms.length} ====== `);
if (debug_log) {
for (let item of validRooms) {
let connectedSockets = await io.in(item).fetchSockets();
console.log(`Room: ${item} connected: ${connectedSockets.length}`);
}
}
} catch (e) {
console.error(e);
}
}, 30000, io);
socketConnexionTimeout(io);
Promise.all([pubClient.connect(), subClient.connect()])
.then(() => {
io.adapter(createAdapter(pubClient, subClient));
io.adapter(createAdapter(pubClient, subClient,
{requestsTimeout: process.env.REDIS_REQUESTS_TIMEOUT || 5000}));
console.log("> redis connected.");
})
.catch((err) => {
@ -140,6 +120,7 @@ module.exports = {
socketsListByProject,
socketsLive,
socketsLiveByProject,
socketsLiveBySession,
autocomplete
}
};

View file

@ -25,6 +25,7 @@ const {
socketsList,
socketsListByProject,
socketsLiveByProject,
socketsLiveBySession,
autocomplete
} = require('../utils/httpHandlers');
@ -76,7 +77,7 @@ wsRouter.post(`/sockets-live`, socketsLive);
wsRouter.get(`/sockets-live/:projectKey/autocomplete`, autocomplete);
wsRouter.get(`/sockets-live/:projectKey`, socketsLiveByProject);
wsRouter.post(`/sockets-live/:projectKey`, socketsLiveByProject);
wsRouter.get(`/sockets-live/:projectKey/:sessionId`, socketsLiveByProject);
wsRouter.get(`/sockets-live/:projectKey/:sessionId`, socketsLiveBySession);
module.exports = {
wsRouter,
@ -86,29 +87,6 @@ module.exports = {
io.on('connection', (socket) => onConnect(socket));
console.log("WS server started");
setInterval(async (io) => {
try {
let count = 0;
const rooms = await getAvailableRooms(io);
console.log(` ====== Rooms: ${rooms.size} ====== `);
const arr = Array.from(rooms);
const filtered = arr.filter(room => !room[1].has(room[0]));
for (let i of filtered) {
let {projectKey, sessionId} = extractPeerId(i[0]);
if (projectKey !== null && sessionId !== null) {
count++;
}
}
console.log(` ====== Valid Rooms: ${count} ====== `);
if (debug_log) {
for (let item of filtered) {
console.log(`Room: ${item[0]} connected: ${item[1].size}`);
}
}
} catch (e) {
console.error(e);
}
}, 30000, io);
socketConnexionTimeout(io);
},
@ -117,6 +95,7 @@ module.exports = {
socketsListByProject,
socketsLive,
socketsLiveByProject,
socketsLiveBySession,
autocomplete
}
};