SocketIORouter: Improve error handling

This commit is contained in:
Richard Hansen 2022-02-23 15:41:23 -05:00
parent fcfa51bda6
commit 3b76b2dd67
1 changed files with 11 additions and 11 deletions

View File

@ -68,19 +68,19 @@ exports.setSocketIO = (_io) => {
components[i].handleConnect(socket); components[i].handleConnect(socket);
} }
socket.on('message', (message, ack = () => {}) => { socket.on('message', (message, ack = () => {}) => (async () => {
if (!message.component || !components[message.component]) { if (!message.component || !components[message.component]) {
logger.error(`Can't route the message: ${JSON.stringify(message)}`); throw new Error(`unknown message component: ${message.component}`);
return;
} }
logger.debug(`from ${socket.id}: ${JSON.stringify(message)}`); logger.debug(`from ${socket.id}:`, message);
(async () => await components[message.component].handleMessage(socket, message))().then( return await components[message.component].handleMessage(socket, message);
(val) => ack(null, val), })().then(
(err) => { (val) => ack(null, val),
logger.error(`Error while handling message from ${socket.id}: ${err.stack || err}`); (err) => {
ack({name: err.name, message: err.message}); logger.error(
}); `Error handling ${message.component} message from ${socket.id}: ${err.stack || err}`);
}); ack({name: err.name, message: err.message}); // socket.io can't handle Error objects.
}));
socket.on('disconnect', (reason) => { socket.on('disconnect', (reason) => {
logger.debug(`${socket.id} disconnected: ${reason}`); logger.debug(`${socket.id} disconnected: ${reason}`);