在Node.js websocket连接中获取客户端的IP(socket.io)

时间:2013-10-10 23:22:31

标签: javascript node.js socket.io

问题在于标题。

我一直在漫游网络,看似永恒,以了解如何在连接后获取客户端的IP。

没有任何ws.request,ws._socket,ws.adress()或者ws.everyfreakingthing在那里给了我任何结果。服务器的IP是192.168.0.23,客户端是192.168.0.15。

连接运行良好(我可以发送,接收,连接和关闭连接就好了)。 在它。

服务器的IP为192.168.0.23,客户端为192.168.0.15。 编辑:也尝试在localhost和另一台外部机器上使用另一台路由器(使用外部IP地址)

wss.on('connection', function(ws) {

    console.log(ws.what?);

    ws.on('message', function(message) {
        console.log('received : %s', message);
    });

    ws.on('close', function(){
    });

    ws.send('HELLO');
});

我非常感谢能得到的任何帮助!

编辑:我有效地继续寻找没有任何结果的解决方案。 没有文档可以在线获取,不知道为什么,但获取客户端的IP地址应该是一件容易的事情。

我真的迷失在这里,我已经花了很多时间来解决这个问题,似乎无法修复它。在线的每个人似乎都有不同的解决方案,而其他人没有工作,我不确定它是否取决于版本,但在最新版本中,它们似乎都不起作用。

同样,我会非常感谢能够让我向前迈进这一问题的任何提示,我正在努力。

编辑:Here is a log corresponding on console.log(ws) on connection to help with the search.

2 个答案:

答案 0 :(得分:1)

您可能正在为.on()处理程序使用错误的对象:

var wss = require('http').createServer(handler).listen(80);
var io = require('socket.io').listen(wss);
wss.on('connection', function(ws) { ...  // OOPS, http.server.on
io.on('connection', function(ws) { ...  // CORRECT, socket.io.on

我猜这是因为你的 console.log(ws)对象看起来像是node的内置net.Socket类的实例,而不是socket.io的socket类。

答案 1 :(得分:-1)

试试这个:

 wss.sockets.on("connection", function (ws) { var address = ws.handshake.address; console.log("Ip from " + address.address + ":" + address.port); }