Newt registration?

This commit is contained in:
Owen Schwartz 2024-11-15 21:53:58 -05:00
parent e141263b7e
commit 40734184af
No known key found for this signature in database
GPG key ID: 8271FDFFD9E0CCBD
11 changed files with 89 additions and 53 deletions

View file

@ -8,6 +8,7 @@ import { eq } from "drizzle-orm";
import db from "@server/db";
import { validateNewtSessionToken } from "@server/auth/newt";
import { messageHandlers } from "./messageHandlers";
import logger from "@server/logger";
// Custom interfaces
interface WebSocketRequest extends IncomingMessage {
@ -39,7 +40,7 @@ interface HandlerResponse {
interface HandlerContext {
message: WSMessage;
senderWs: WebSocket;
senderNewtId: string;
newt: Newt | undefined;
sendToClient: (newtId: string, message: WSMessage) => boolean;
broadcastToAllExcept: (message: WSMessage, excludeNewtId?: string) => void;
connectedClients: Map<string, WebSocket[]>;
@ -58,7 +59,7 @@ const addClient = (newtId: string, ws: AuthenticatedWebSocket): void => {
const existingClients = connectedClients.get(newtId) || [];
existingClients.push(ws);
connectedClients.set(newtId, existingClients);
console.log(`Client added to tracking - Newt ID: ${newtId}, Total connections: ${existingClients.length}`);
logger.info(`Client added to tracking - Newt ID: ${newtId}, Total connections: ${existingClients.length}`);
};
const removeClient = (newtId: string, ws: AuthenticatedWebSocket): void => {
@ -67,10 +68,10 @@ const removeClient = (newtId: string, ws: AuthenticatedWebSocket): void => {
if (updatedClients.length === 0) {
connectedClients.delete(newtId);
console.log(`All connections removed for Newt ID: ${newtId}`);
logger.info(`All connections removed for Newt ID: ${newtId}`);
} else {
connectedClients.set(newtId, updatedClients);
console.log(`Connection removed - Newt ID: ${newtId}, Remaining connections: ${updatedClients.length}`);
logger.info(`Connection removed - Newt ID: ${newtId}, Remaining connections: ${updatedClients.length}`);
}
};
@ -78,7 +79,7 @@ const removeClient = (newtId: string, ws: AuthenticatedWebSocket): void => {
const sendToClient = (newtId: string, message: WSMessage): boolean => {
const clients = connectedClients.get(newtId);
if (!clients || clients.length === 0) {
console.log(`No active connections found for Newt ID: ${newtId}`);
logger.info(`No active connections found for Newt ID: ${newtId}`);
return false;
}
@ -198,7 +199,7 @@ wss.on("connection", (ws: AuthenticatedWebSocket, request: WebSocketRequest) =>
ws.on("message", async (data) => {
try {
const message: WSMessage = JSON.parse(data.toString());
// console.log(`Message received from Newt ID ${newtId}:`, message);
// logger.info(`Message received from Newt ID ${newtId}:`, message);
// Validate message format
if (!message.type || typeof message.type !== "string") {
@ -215,7 +216,7 @@ wss.on("connection", (ws: AuthenticatedWebSocket, request: WebSocketRequest) =>
const response = await handler({
message,
senderWs: ws,
senderNewtId: newtId,
newt: ws.newt,
sendToClient,
broadcastToAllExcept,
connectedClients
@ -250,7 +251,7 @@ wss.on("connection", (ws: AuthenticatedWebSocket, request: WebSocketRequest) =>
ws.on("close", () => {
clearInterval(pingInterval);
removeClient(newtId, ws);
console.log(`Client disconnected - Newt ID: ${newtId}`);
logger.info(`Client disconnected - Newt ID: ${newtId}`);
});
ws.on("error", (error: Error) => {