From 80a50c1eb037d877b94b57becb2994c8e6fc1769 Mon Sep 17 00:00:00 2001 From: Luke Steyn Date: Wed, 22 Nov 2023 14:37:11 +0100 Subject: [PATCH] Better error handling --- src/wsConnectionManager.ts | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/wsConnectionManager.ts b/src/wsConnectionManager.ts index 8b7283f..226cb89 100644 --- a/src/wsConnectionManager.ts +++ b/src/wsConnectionManager.ts @@ -28,8 +28,15 @@ const wss = new WebSocketServer({ server, path: '/ws' }); const REDIS_HOST = process.env.REDIS_HOST || 'localhost'; const REDIS_PORT = process.env.REDIS_PORT || '6379'; const WS_PORT = process.env.WS_PORT || '3000'; + +console.log(`WS LISTENER PORT : ${WS_PORT}`); + const REDIS_PASSWORD = process.env.REDIS_PASSWORD; +const safeGetRawChannelFromMessage = (message: any): string => { + return message?.channel; +}; + const getRedisChannelFromMessage = (message: any): string => { const channel = message.channel; const marketName = message.market?.toUpperCase(); @@ -119,7 +126,17 @@ async function main() { try { redisChannel = getRedisChannelFromMessage(parsedMessage); } catch (error) { - ws.send(JSON.stringify({ error: error.message })); + const requestChannel = safeGetRawChannelFromMessage(parsedMessage); + if (requestChannel) { + ws.send( + JSON.stringify({ + channel: requestChannel, + error: error.message, + }) + ); + } else { + ws.close(1003, JSON.stringify({ error: error.message })); + } return; } @@ -165,7 +182,17 @@ async function main() { try { redisChannel = getRedisChannelFromMessage(parsedMessage); } catch (error) { - ws.send(JSON.stringify({ error: error.message })); + const requestChannel = safeGetRawChannelFromMessage(parsedMessage); + if (requestChannel) { + ws.send( + JSON.stringify({ + channel: requestChannel, + error: error.message, + }) + ); + } else { + ws.close(1003, JSON.stringify({ error: error.message })); + } return; } const subscribers = channelSubscribers.get(redisChannel);