客户端
let server = new Websocket(path, opts)
- 将其放入
try-catch
块中可发现程序员错误,例如URL不正确,但似乎无法捕获操作错误,比如服务器未能正确响应,因为它们是异步的而且没有回调函数。 server.send(data, cb)
- 将其放入
try-catch
块中可捕获类型错误,通常是程序员错误。 - 在此添加回调函数(
function (err) { handleErr(err); }
)是一种很好的操作错误捕捉方式,因为如果发送由于任何原因而失败,则回调函数将具有非空的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
可能出现的所有不同问题的文档,或者至少有一份指南以提高其稳定性?我觉得部署这个东西就像是赌博,随时可能被叫到办公室去修复问题。