update the user every 15 secodns in websocket context

This commit is contained in:
StarAppeal
2024-11-25 01:39:10 +01:00
parent b60125dff5
commit c70deb8130
2 changed files with 16 additions and 2 deletions
+2 -1
View File
@@ -19,11 +19,12 @@ export class WebsocketEventHandler {
});
}
public enableDisconnectEvent() {
public enableDisconnectEvent(callback: () => void) {
this.webSocket.onclose = (event) => {
console.log("WebSocket closed:", event.code, event.reason, event.wasClean, event.type);
console.log(`User: ${this.webSocket.payload.name} disconnected`);
clearInterval(this.webSocket.spotifyUpdate);
callback();
};
}
+14 -1
View File
@@ -5,6 +5,7 @@ import {ExtendedWebSocket} from "./interfaces/extendedWebsocket";
import {DecodedToken} from "./interfaces/decodedToken";
import {WebsocketServerEventHandler} from "./utils/websocket/websocketServerEventHandler";
import {WebsocketEventHandler} from "./utils/websocket/websocketEventHandler";
import {UserService} from "./db/services/db/UserService";
export class ExtendedWebSocketServer {
private readonly _wss: WebSocketServer;
@@ -55,9 +56,21 @@ export class ExtendedWebSocketServer {
console.log("WebSocket client connected");
socketEventHandler.enableErrorEvent();
socketEventHandler.enableDisconnectEvent();
socketEventHandler.enablePongEvent();
socketEventHandler.enableMessageEvent();
// update user every 30 seconds
const updateUserInterval = setInterval(async () => {
console.log("Updating user")
const userService = await UserService.create();
const user = await userService.getUserByUUID(ws.payload._id);
if (user) {
ws.user = user;
}
}, 15000);
socketEventHandler.enableDisconnectEvent(() => {
clearInterval(updateUserInterval);
});
});
const interval = serverEventHandler.enableHeartbeat(30000);