Node.js-EventListener-仅捕获触发数据事件的套接字的关闭事件

Node.js-EventListener-仅捕获触发数据事件的套接字的关闭事件,node.js,tcp,event-listener,Node.js,Tcp,Event Listener,每次套接字关闭并触发“数据”事件时,我都需要登录到一个文件(我当前正在使用winston)。 这是我的密码: net.createServer(function (socket) { var remoteAdressPort = socket.remoteAddress + " - " + socket.remotePort; socket.on('data', function (data) { [...] // some treat

每次套接字关闭并触发“数据”事件时,我都需要登录到一个文件(我当前正在使用winston)。 这是我的密码:

net.createServer(function (socket)
{
    var remoteAdressPort = socket.remoteAddress + " - " + socket.remotePort;
    socket.on('data', function (data)
    {
        [...] // some treatments
    });

    socket.on('close', function() {
        logger.info("Socket has been closed : " + remoteAdressPort);
    });


}).listen(port);

问题是,当我在所讨论的端口上侦听时,许多从未触发“数据”事件(我不感兴趣)的套接字也被关闭,这给了我一个无法使用的巨大日志过载。我只想记录触发“数据”事件的套接字关闭情况。这可能吗?

是的!您可以将变量保持在事件侦听器的作用域之上(例如,
sentData
),并在数据事件发生时将其变为
true
,然后在
close
事件中进行检查

net.createServer(函数(套接字)
{
设sentData=false;
var remoteaddressport=socket.remoteAddress+“-”+socket.remotePort;
socket.on('data',函数(data)
{
sentData=true;
[…]//一些治疗方法
});
socket.on('close',function(){
如果(数据){
logger.info(“套接字已关闭:“+RemoteAddressPort”);
}
});
}).监听(端口);

我确信我尝试过这种风格的东西。但它确实有效,谢谢你!