【发布时间】: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