我正在努力将基于REST的数据管道替换为基于Websocket的数据管道,而在查找所有可能出错的地方时遇到了麻烦。该系统是生产环境,因此如果发生故障并且无法恢复,则会发生非常糟糕的事情。这是到目前为止我得到的:
let server = new Websocket(path, opts)
try-catch
中将发现程序员错误,例如不正确的URL,但由于服务器是异步的,并且没有回调,因此诸如服务器未正确响应之类的操作错误似乎无法捕获]server.send(data, cb)
try-catch
中将捕获类型错误,通常是程序员错误function (err) { handleErr(err); }
)可以很好地解决操作错误,因为如果由于任何原因发送失败,回调将具有非null err
,因此可以处理server.on('error', cb)
error
事件是EventEmitter
规范的一部分,但我实际上还没有抓住任何东西ws
自述文件建议将此作为捕获静默连接失败的方法server.on('connection', function(connection) {...})
connection.send('test', function(err) { handleErr(err); });
是在尝试使用连接之前确保连接不会因设置而失败的一种好方法,但可能没有必要。另外,出于上述原因,应将其包装在try-catch
中server.on('error', cb)
似乎很难在生产环境上构建ws
,因为没有地方记录所有可能出错的不同事情,而使用更加用户友好的库(如Socket.io)将删除通过使用ws
寻求许多性能优势。是否有关于使用ws
时可能出错的所有不同问题的文档,或者至少是对其进行强化处理的指南?我觉得部署这东西只是一场赌博,我可以生气地叫我去办公室修理东西。
我正在努力将基于REST的数据管道替换为基于Websocket的数据管道,而在查找所有可能出错的地方时遇到了麻烦。系统是生产系统,因此如果发生......>
您应该捕获error
事件中的所有错误。
let server = new Websocket(path, opts)
server.on('error', (error) => {
//handle error
})