fix: logout disconnection sockets

This commit is contained in:
yassinedorbozgithub
2025-01-29 14:50:05 +01:00
parent 1288eb87cf
commit 79cb85f74f
3 changed files with 29 additions and 5 deletions

View File

@@ -1,12 +1,12 @@
/*
* Copyright © 2024 Hexastack. All rights reserved.
* Copyright © 2025 Hexastack. All rights reserved.
*
* Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:
* 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
*/
import { EventEmitter2 } from '@nestjs/event-emitter';
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';
import {
ConnectedSocket,
MessageBody,
@@ -258,6 +258,17 @@ export class WebsocketGateway
this.eventEmitter.emit(`hook:websocket:connection`, client);
}
@OnEvent('hook:user:logout')
disconnectSockets(sessionCookie: string) {
if (sessionCookie.length) {
for (const [socketId, socket] of this.io.sockets.sockets) {
if (socket.handshake.headers.cookie?.includes(sessionCookie)) {
this.io.sockets.sockets.get(socketId)?.disconnect(true);
}
}
}
}
async handleDisconnect(client: Socket): Promise<void> {
this.logger.log(`Client id:${client.id} disconnected`);
// Configurable custom afterDisconnect logic here