大致情况就是使用node
搭建TCP服务器
,大概有100
个TCP client
。
同时维持这100
个TCP
通道。
但是最近在测试的时候,如果这100
个TCP client
里面出现某些client
以不优雅的方式断开连接的情况(如网线故障等物理链路
的原因或者client突然断电
等原因)后,会直接让主程序挂起。
报错为:
现在处理方法是一个监控程序去监测整个程序,如果遇到这种挂起的情况,那么会重启整个程序。
请问是否有其他的方式能监听这种不优雅的断开连接的情况?
阿神2017-04-10 16:34:42
你可以在每个 TCP 连接上时添加 error
事件来处理:
let server = net.createServer(function (socket) {
socket.on("error", function (err) {
// dosomething...
});
});
迷茫2017-04-10 16:34:42
你看,主程序抛出了异常,其实你只要捕获这个异常再妥善处理就好了,最简单的,在 tcp 连接读取时加一层 try catch。
其实呢,使用裸 tcp 连接来干并不容易,我推荐客户端到服务器之间用 zeromq 来连接,连接的成功和失败由 zeromq 自动管理,这里就省去很多事情了。