问题在于标题。
我一直在漫游网络,看似永恒,以了解如何在连接后获取客户端的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.
答案 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); }