javascript - node.js TCP连接以不优雅的方式断开连接后如何监听?
PHP中文网
PHP中文网 2017-04-10 16:32:42
0
2
309

大致情况就是使用node搭建TCP服务器,大概有100TCP client

同时维持这100TCP通道。

但是最近在测试的时候,如果这100TCP client里面出现某些client以不优雅的方式断开连接的情况(如网线故障等物理链路的原因或者client突然断电等原因)后,会直接让主程序挂起。

报错为:

现在处理方法是一个监控程序去监测整个程序,如果遇到这种挂起的情况,那么会重启整个程序。

请问是否有其他的方式能监听这种不优雅的断开连接的情况?

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(2)
阿神

你可以在每个 TCP 连接上时添加 error 事件来处理:

let server = net.createServer(function (socket) {
    socket.on("error", function (err) {
        // dosomething...
    });
});
迷茫

你看,主程序抛出了异常,其实你只要捕获这个异常再妥善处理就好了,最简单的,在 tcp 连接读取时加一层 try catch。

其实呢,使用裸 tcp 连接来干并不容易,我推荐客户端到服务器之间用 zeromq 来连接,连接的成功和失败由 zeromq 自动管理,这里就省去很多事情了。

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal