0
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:Port 作为键来保留已连接套接字的列表。如果我不知道哪个已关闭,我如何将其从列表中删除?关闭后如何获取已关闭套接字的 IP:端口?

4

3 回答 3

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 提出了这个解决方案!

于 2012-08-26T16:06:44.407 回答
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 );
});

只需保持数据与套接字对象相关联。希望这会有所帮助。

于 2012-08-27T00:48:25.570 回答
0

一旦https://github.com/joyent/node/commit/8c38b07252d86f4eef91344f8df4f0c3e38bca35在 Node.js 的稳定版本中,即使断开连接,remoteAddress 属性也会存在。io.js 将在下一个版本中包含它:https ://github.com/iojs/io.js/issues/1157

于 2015-03-17T03:21:04.560 回答