2012-08-25 25 views
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在关闭事件处理程序中获取套接字的IP地址

来自关闭处理程序的日志显示为undefined:undefined

我想保留使用IP:Port作为密钥的连接套接字列表。如果我不知道哪一个关闭了,我怎样才能从列表中删除它?关闭后,如何获得封闭套接字的IP:端口?

+0

我会重新考虑这一点。你不需要它。套接字事件为您提供套接字,并且套接字在存在时为您提供IP地址。如果没有套接字,IP地址本身就没用。地图的用途是什么? – EJP

+0

会有其他数据与每个客户端关联,并且服务器偶尔需要写入特定的客户端(而不是响应套接字事件),所以我需要保留连接的客户端列表,以便我可以单独解决它们 –

+0

然后,您需要找到套接字的一个属性,该属性在关闭时不会更改,以便为您的集合建立索引。 – EJP

回答

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建议这个解决方案!

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); 
}); 

只是保持与socket对象关联的数据。希望这会有所帮助。

相关问题