1

问题在标题中。

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

没有多少 ws.request、ws._socket、ws.adress() 或 ws.everyfreakingthingthereisoutthere 给了我任何结果。服务器的 IP 是 192.168.0.23 ,客户端的 IP 是 192.168.0.15 。

连接运行良好(我可以很好地发送、接收、连接和关闭连接)。在里面。

服务器的 IP 是 192.168.0.23 ,客户端的 IP 是 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 地址应该是一件很容易的事情。

我真的迷路了,我已经在这个问题上投入了很多时间,但似乎无法解决它。网上的每个人似乎都有不同的解决方案工作,而其他的不工作,我不确定它是否取决于版本,但在最新版本上似乎没有一个工作。

再次,我将非常感谢任何能让我在这个问题上更进一步的提示,我正在尽我所能。

编辑:这是console.log(ws)上对应的日志,用于帮助搜索。

4

2 回答 2

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 类的实例。

于 2013-12-20T06:19:43.627 回答
-1

尝试这个:

 wss.sockets.on("connection", function (ws) { var address = ws.handshake.address; console.log("Ip from " + address.address + ":" + address.port); }
于 2013-10-11T02:03:04.600 回答