diff --git a/app/Middleware/Ws/Auth.ts b/app/Middleware/Ws/Auth.ts index b859d27..9ea6786 100644 --- a/app/Middleware/Ws/Auth.ts +++ b/app/Middleware/Ws/Auth.ts @@ -6,7 +6,6 @@ import OpaqueTokenHelper from 'App/Helpers/OpaqueTokenHelper'; import Ws, { ClientToServerEvents, InterServerEvents, ServerToClientEvents, SocketData } from 'App/Services/WsService'; import { Socket } from 'socket.io'; import { ExtendedError } from 'socket.io/dist/namespace'; -import Logger from '@ioc:Adonis/Core/Logger'; export default class AuthMiddleware { /** @@ -53,8 +52,6 @@ export default class AuthMiddleware { const session = await Ws.sessionStore.findSession(sessionId); if (session) { - Logger.info(`[Ws]: Attacing session from redis session store.`); - socket.data.sessionId = sessionId; socket.data.userId = session.userId; socket.data.userName = session.userName; @@ -66,7 +63,6 @@ export default class AuthMiddleware { /** * Parse data from redis string and create new session */ - Logger.info(`[Ws]: Attaching token data from cookie.`); const parsedData = JSON.parse(data); /** diff --git a/app/Services/WsService.ts b/app/Services/WsService.ts index ed332a9..a303ed6 100644 --- a/app/Services/WsService.ts +++ b/app/Services/WsService.ts @@ -1,6 +1,6 @@ +import { Server } from 'socket.io'; import Redis from '@ioc:Adonis/Addons/Redis'; import AdonisServer from '@ioc:Adonis/Core/Server'; -import { Server } from 'socket.io'; /** * Controllers @@ -32,9 +32,9 @@ export interface ClientToServerEvents { export interface InterServerEvents {} export interface SocketData { - sessionId?: string | undefined; - userId?: string | undefined; - userName?: string | undefined; + sessionId: string; + userId: string; + userName: string; } class WsService { @@ -64,23 +64,23 @@ class WsService { private listen() { this.io.on('connection', socket => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars const onlineController = new OnlineController(socket); + const { sessionId, userId, userName } = socket.data; + const isExistSocketData = !!(sessionId && userId && userName); /** * Set user session and send online count */ - this.sessionStore - .saveSession(socket.data.sessionId, { - sessionId: socket.data.sessionId, - userId: socket.data.userId, - userName: socket.data.userName, - connected: true, - }) - .then(async () => { - const online = await this.sessionStore.getOnlineSessionsCount(); - socket.emit('user:online', online); - socket.broadcast.emit('user:online', online); - }); + if (isExistSocketData) { + this.sessionStore + .saveSession(sessionId, { userId, userName, connected: true }) + .then(() => this.sessionStore.getOnlineSessionsCount()) + .then(online => { + socket.emit('user:online', online); + socket.broadcast.emit('user:online', online); + }); + } /** * Send session to client @@ -96,21 +96,17 @@ class WsService { }); socket.on('disconnect', async () => { - const matchingSockets = await this.io.in(socket.data.userId).allSockets(); - const isDisconnected = matchingSockets.size === 0; + if (isExistSocketData) { + const matchingSockets = await this.io.in(userId).allSockets(); + const isDisconnected = matchingSockets.size === 0; - if (isDisconnected) { - /** - * Update connection flag of socket to flase - */ - this.sessionStore.saveSession(socket.data.sessionId, { - sessionId: socket.data.sessionId, - userId: socket.data.userId, - userName: socket.data.userName, - connected: false, - }); - - this.sessionStore.getOnlineSessionsCount().then(online => socket.broadcast.emit('user:online', online)); + if (isDisconnected) { + /** + * Update connection flag of socket to flase and send online count + */ + this.sessionStore.saveSession(sessionId, { userId, userName, connected: false }); + this.sessionStore.getOnlineSessionsCount().then(online => socket.broadcast.emit('user:online', online)); + } } }); });