SocketIORouter: Add acknowledgement support

This commit is contained in:
Richard Hansen 2021-09-06 05:42:47 -04:00
parent 9f9adb369b
commit bc9cdd6957
2 changed files with 31 additions and 19 deletions

View file

@ -68,7 +68,7 @@ exports.setSocketIO = (_io) => {
components[i].handleConnect(socket);
}
socket.on('message', async (message) => {
socket.on('message', (message, ack = () => {}) => {
if (message.protocolVersion && message.protocolVersion !== 2) {
logger.warn(`Protocolversion header is not correct: ${JSON.stringify(message)}`);
return;
@ -78,11 +78,12 @@ exports.setSocketIO = (_io) => {
return;
}
logger.debug(`from ${socket.id}: ${JSON.stringify(message)}`);
try {
await components[message.component].handleMessage(socket, message);
} catch (err) {
logger.error(`Error while handling message from ${socket.id}: ${err.stack || err}`);
}
(async () => await components[message.component].handleMessage(socket, message))().then(
(val) => ack(null, val),
(err) => {
logger.error(`Error while handling message from ${socket.id}: ${err.stack || err}`);
ack({name: err.name, message: err.message});
});
});
socket.on('disconnect', (reason) => {