search

Home  >  Q&A  >  body text

javascript - node.js TCP连接以不优雅的方式断开连接后如何监听?

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

同时维持这100TCP通道。

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

报错为:

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

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

PHP中文网PHP中文网2816 days ago301

reply all(2)I'll reply

  • 阿神

    阿神2017-04-10 16:34:42

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

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

    reply
    0
  • 迷茫

    迷茫2017-04-10 16:34:42

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

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

    reply
    0
  • Cancelreply