【问题标题】:Node.js - tcp server close event handler is not workingNode.js - tcp 服务器关闭事件处理程序不起作用
【发布时间】:2014-03-10 17:18:03
【问题描述】:

为什么同时调用结束事件处理程序(socket)和关闭事件处理程序(服务器)? 我希望在 30 秒后调用关闭事件处理程序。

有人可以帮帮我吗?

虽然 30 秒后我的 TCP 服务器不接受任何新连接(保持现有连接打开),但我期待 30 秒后关闭事件处理程序调用。 当我强制关闭所有现有的 tcp 客户端时,将调用服务器的关闭事件处理程序以及套接字的结束事件处理程序。

TCP 连接结束
TCP 连接结束
服务器已关闭,但它会保持现有连接

var net = require("net");

function getSocketInfo(socketObject){
                    console.log('bytesRead= ' + socketObject.bytesRead);
                    console.log('bytesWritten= ' + socketObject.bytesWritten);
}

var tcpServer = net.createServer({allowHalfOpen:false},function(socketObject){
                socketObject.setEncoding('utf8');
                getSocketInfo(socketObject);
                socketObject.on('data',function(data){
                        console.log('data received');
                        console.log(data);
                        console.log(data.length);
                        socketObject.write('Server Reply: ' + data,'utf8',function(){
                        console.log('data successfully written on socket');
                        });
                        getSocketInfo(socketObject);
                        });

                socketObject.on('end',function(){
                        console.log('TCP connection ended');
                        });
                });

setTimeout(function(){tcpServer.close();},30000);

tcpServer.on('close',function(){ console.log('server closed but it will keep existing connection');});

tcpServer.on('error',function(error){
                console.log(error.code);
                });

tcpServer.listen(8000,function(){
                console.log('TCP server has been bound');
                });

【问题讨论】:

    标签: node.js


    【解决方案1】:

    我在查看活动部分后得到了答案。

    关闭处理程序将在所有现有 TCP 连接关闭时调用,而不是在关闭方法调用后立即调用。这很奇怪,但根据文档,这是正确的行为。

    事件:'关闭'#

    服务器关闭时发出。请注意,如果存在连接,则此 在所有连接结束之前不会发出事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-27
      • 2019-05-03
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 2013-01-15
      • 2010-11-20
      • 2015-03-16
      相关资源
      最近更新 更多