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

相關文章
相關標籤/搜索