我有一个 node.js 服务器,它使用关联的套接字数组跟踪连接到它的所有“客户端”,因为有时我需要向特定客户端发送一些数据。该数组中的键是由以下组成的字符串
socket.remoteAddress + ':' + socket.remotePort
和值是传递给提供给 net.createServer(...) 的回调的套接字实例 有时客户端出于某种原因断开连接,我收到“结束”和“关闭”事件。我想从我的客户端注册表中删除断开连接的客户端,但在关闭/结束事件回调中,remoteAddress 和 remotePort 变量未定义。可以以某种方式检索它们吗?
为了显示:
var registry = {}
var server = net.createServer(function (socket) {
socket.on('connect', function(){
registry [socket.remoteAddress + ':' + socket.remotePort] = socket;
});
socket.on('close', function(had_error){
// ******************************************************
// socket.remoteAddress and remotePort are undefined here
// ******************************************************
var id = socket.remoteAddress + ':' + socket.remotePort;
// *************************************************************
if(registry.hasOwnProperty(id)
delete socket.id;
});
});