Node.js套接字由其他方结束

时间:2017-03-09 16:14:10

标签: javascript node.js sockets

我有一个基于Node.js的TCP服务器。连接新套接字时,我将它们包装在客户端对象中:

    net.createServer(function(socket){
        socket.setEncoding("utf8");
        socket.name = socket.remoteAddress + ':' + socket.remotePort;
        var client = cm.create(socket);
    }).listen(this.settings.port);

当客户端断开连接时,如何防止自己写入套接字?我知道有些事件包括'关闭'错误'错误'结束'但是我无法弄清楚这些会对我有什么帮助。

据我了解,这些事件只会在我尝试将数据写入已关闭的套接字时触发。但到那个时候,错误就会被抛出......

2 个答案:

答案 0 :(得分:2)

似乎只是处理错误事件本身会阻止未经处理的错误异常。谁会想到?

    client.socket.on('error', function(){
        console.log("CLIENT HAS ERRORED")
    });

这可以防止节点应用程序死亡。

答案 1 :(得分:0)

您可以执行类似此伪代码的操作:

var active = true;

var connection = createConnection();
connection.onExit(function() { active = false; });

while (active){
  connection.talk();
}

因此,您的通信线程共享一个变量,该变量可由套接字关闭时发生的回调访问。这样他们就可以沟通。