Api v1.15.0 (#1601)
* refactor(assist): cleaned code * refactor(assist): enhanced get-live-session
This commit is contained in:
parent
62b8e4e396
commit
c95a5f4254
7 changed files with 56 additions and 75 deletions
|
|
@ -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
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
4
ee/assist/.gitignore
vendored
4
ee/assist/.gitignore
vendored
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
};
|
||||
|
|
@ -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
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue