簡體   English   中英

在Node.js Websocket連接(socket.io)中獲取客戶端的IP

[英]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地址應該很容易做到。

我在這里真的迷路了,我已經花了很多時間解決這個問題,而且似乎無法解決。 在線上的每個人似乎都有不同的解決方案在起作用,而其他的則不起作用,我不確定這是否取決於版本,但是在最新版本上似乎都不起作用。

再次感謝任何能使我在這個問題上邁出一步的提示,我正在盡力而為。

編輯: 這是console.log(ws)上與連接有關的日志,以幫助進行搜索。

您可能為.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM