socket.io获取客户端的IP地址(修正官方1.0.4版本BUG)

以前我有看过别人写的文章,说到如何获取客户端IP地址,代码以下:node

var io = require("socket.io").listen(server);
io.sockets.on("connection", function (socket) { 
       var address = socket.handshake.address; 
        console.log("New connection from " + address.address + ":" + address.port);
});

这是在0.9.x版本是能够正确获取到客户端IP地址的。服务器

可是当你使用1.0.4版本的时候发现获取到的IP地址是本地服务器绑定的IP.socket

查过官方的API文档可是没有介绍关于IP地址如何获取的。因此只好本身修改源码了。ui

===================================================
如今修改socket.io的模块源码以获取真实IP地址,并保留原有代码的兼容性。this

 打开/node_modules/socket.io/lib/socket.js文件socket.io

 在110行找到代码spa

address: this.request.connection.address(),

修改成code

address: {'address':this.request.connection.remoteAddress,'port':this.request.connection.remotePort},

只要改一个文件,而后重启node,就能够用了。server

相关文章
相关标签/搜索