1

質問はタイトルにあります。

私は、接続後にクライアントの IP を取得する方法を見つけるために、永遠に思えるほど Web をローミングしてきました。

ws.request、ws._socket、ws.address()、または ws.everyfreakingthingthereisoutthere の量は、結果をもたらしませんでした。サーバーの IP は 192.168.0.23 で、クライアントの IP は 192.168.0.15 です。

接続はうまく機能します (接続を正常に送信、受信、接続、閉じることができます)。初期化。

サーバーの IP は 192.168.0.23 で、クライアントの IP は 192.168.0.15 です。編集: また、ローカルホストで、別のルーター上の別の外部マシンで試しました (外部 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)オブジェクトは、socket.io のソケット クラスではなく、ノードの組み込み net.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 に答える