Compare commits

...
Sign in to create a new pull request.

5 commits

Author SHA1 Message Date
Андрей Бабушкин
d466113946 fix getting agent ids list 2025-02-24 16:18:29 +01:00
Андрей Бабушкин
b1df3028aa fix socket id detecting 2025-02-24 16:09:17 +01:00
Андрей Бабушкин
72e8207d4d add socket data logging 2025-02-24 15:59:09 +01:00
Андрей Бабушкин
1b0ad44d65 fix socket id handling 2025-02-24 14:48:20 +01:00
Андрей Бабушкин
4cf1b94189 aff handler 2025-02-24 14:41:44 +01:00
2 changed files with 17 additions and 1 deletions

View file

@ -10,7 +10,8 @@ const EVENTS_DEFINITION = {
UPDATE_EVENT: "UPDATE_SESSION", // tab become active/inactive, page title change, changed session object (rare case), call start/end
CONNECT_ERROR: "connect_error",
CONNECT_FAILED: "connect_failed",
ERROR: "error"
ERROR: "error",
WEBRTC_AGENT_CALL: "WEBRTC_AGENT_CALL",
},
//The following list of events will be only emitted by the server
server: {

View file

@ -127,6 +127,9 @@ async function onConnect(socket) {
// Handle update event
socket.on(EVENTS_DEFINITION.listen.UPDATE_EVENT, (...args) => onUpdateEvent(socket, ...args));
// Handle webrtc events
socket.on(EVENTS_DEFINITION.listen.WEBRTC_AGENT_CALL, (...args) => onWebrtcAgentHandler(socket, ...args));
// Handle errors
socket.on(EVENTS_DEFINITION.listen.ERROR, err => errorHandler(EVENTS_DEFINITION.listen.ERROR, err));
socket.on(EVENTS_DEFINITION.listen.CONNECT_ERROR, err => errorHandler(EVENTS_DEFINITION.listen.CONNECT_ERROR, err));
@ -186,6 +189,18 @@ async function onUpdateEvent(socket, ...args) {
}
}
async function onWebrtcAgentHandler(socket, ...args) {
if (socket.handshake.query.identity === IDENTITIES.agent) {
const agentIdToConnect = args[0]?.toAgentId;
logger.debug(`${socket.id} sent webrtc event to agent:${agentIdToConnect}`);
const io = getServer();
const { agentIDs } = await getRoomData(io, socket.handshake.query.roomId);
if (agentIdToConnect && agentIDs.includes(agentIdToConnect)) {
socket.to(agentIdToConnect).emit(EVENTS_DEFINITION.listen.WEBRTC_AGENT_CALL, args[0]);
}
}
}
async function onAny(socket, eventName, ...args) {
if (Object.values(EVENTS_DEFINITION.listen).indexOf(eventName) >= 0) {
logger.debug(`received event:${eventName}, should be handled by another listener, stopping onAny.`);