我有一个基于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);
当客户端断开连接时,如何防止自己写入套接字?我知道有些事件包括'关闭'错误'错误'结束'但是我无法弄清楚这些会对我有什么帮助。
据我了解,这些事件只会在我尝试将数据写入已关闭的套接字时触发。但到那个时候,错误就会被抛出......
答案 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();
}
因此,您的通信线程共享一个变量,该变量可由套接字关闭时发生的回调访问。这样他们就可以沟通。