socket.on('data', function(data)
{
console.log(socket.remoteAddress + ":" + socket.remotePort);
}
socket.on('close', function()
{
console.log(socket.remoteAddress + ":" + socket.remotePort);
}
数据处理程序中的日志显示127.0.0.1:8000
。
关闭处理程序中的日志显示undefined:undefined
。
我正在尝试使用IP保留连接套接字列表:端口作为密钥。如果我不知道哪一个已关闭,我该如何从列表中删除它?如何获取IP:关闭套接字关闭后的端口?
答案 0 :(得分:4)
这就是我跟踪客户的方式:
server.on('connect', function(socket)
{
socket.key = socket.remoteAddress + ":" + socket.remotePort;
clients[socket.key] = socket;
socket.on('close', function()
{
delete clients[socket.key];
}
}
非常感谢Node.js IRC频道中的mscdex建议这个解决方案!
答案 1 :(得分:0)
socket.on('connect', function()
{
socket.address = socket.remoteAddress + ":" + socket.remotePort;//save the address in socket object
console.log(socket.remoteAddress + ":" + socket.remotePort);
});
socket.on('data', function(data)
{
console.log(socket.address );
});
socket.on('close', function()
{
console.log(socket.address );
});
只需将数据与套接字对象保持关联。希望这会有所帮助。
答案 2 :(得分:0)
一旦https://github.com/joyent/node/commit/8c38b07252d86f4eef91344f8df4f0c3e38bca35处于稳定版本的Node.js中,即使在断开连接后,remoteAddress属性也会出现。 io.js会在下一个版本中使用它:https://github.com/iojs/io.js/issues/1157