Node.js - EventListener - 仅捕获触发数据事件的套接字的关闭事件
Node.js - EventListener - Only catch close event of a socket that triggered data event
每次关闭套接字并触发 'data' 事件时,我都需要记录到一个文件(我目前正在使用 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);
问题是当我在有问题的端口上监听时,许多从未触发 'data' 事件(并且我不感兴趣)的套接字也被关闭,这给了我一个无法使用的巨大日志过载。我只想记录触发 'data' 事件的套接字的关闭。这可能吗?
是啊!您可以将变量保持在事件侦听器(例如 sentData
)之上的范围,并在数据事件通过时将其变为 true
,然后您可以在 close
事件中检查。
net.createServer(function (socket)
{
let sentData = false;
var remoteAdressPort = socket.remoteAddress + " - " + socket.remotePort;
socket.on('data', function (data)
{
sentData = true;
[...] // some treatments
});
socket.on('close', function() {
if (sentData) {
logger.info("Socket has been closed : " + remoteAdressPort);
}
});
}).listen(port);
每次关闭套接字并触发 'data' 事件时,我都需要记录到一个文件(我目前正在使用 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);
问题是当我在有问题的端口上监听时,许多从未触发 'data' 事件(并且我不感兴趣)的套接字也被关闭,这给了我一个无法使用的巨大日志过载。我只想记录触发 'data' 事件的套接字的关闭。这可能吗?
是啊!您可以将变量保持在事件侦听器(例如 sentData
)之上的范围,并在数据事件通过时将其变为 true
,然后您可以在 close
事件中检查。
net.createServer(function (socket)
{
let sentData = false;
var remoteAdressPort = socket.remoteAddress + " - " + socket.remotePort;
socket.on('data', function (data)
{
sentData = true;
[...] // some treatments
});
socket.on('close', function() {
if (sentData) {
logger.info("Socket has been closed : " + remoteAdressPort);
}
});
}).listen(port);