[英]Getting the client's IP in a Node.js websocket connection (socket.io)
問題在標題中。
我一直在網上漫游,以了解如何在連接后獲取客戶端IP。
沒有任何ws.request,ws._socket,ws.adress()或ws.everyfreakingthingthereis這些都沒有給我任何結果。服務器的IP為192.168.0.23,客戶端的為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地址應該很容易做到。
我在這里真的迷路了,我已經花了很多時間解決這個問題,而且似乎無法解決。 在線上的每個人似乎都有不同的解決方案在起作用,而其他的則不起作用,我不確定這是否取決於版本,但是在最新版本上似乎都不起作用。
再次感謝任何能使我在這個問題上邁出一步的提示,我正在盡力而為。
您可能為.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)對象看起來像節點的內置net.Socket類的實例,而不是socket.io的套接字類的實例。
嘗試這個:
wss.sockets.on("connection", function (ws) { var address = ws.handshake.address; console.log("Ip from " + address.address + ":" + address.port); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.