最終的に、ここでの目標は、socket.io で DNS ラウンド ロビンを処理し、異なる接続 (socket.io と jQuery ajax) を調整して、1 つの名前が複数のサーバーにマップされたときに同じサーバーに移動することです。
このコードを使用すると、着信 Websocket 接続のクライアント側 IP アドレスを見つけることができます。
var app = express();
...
var server = http.createServer(app);
...
var io = socketio.listen(server);
io.on('connection', function(socket) {
var addr = socket.handshake.address;
logger.info("Just got incoming connection from client " + addr.address
+ ":" + addr.port);
しかし、このソケットのサーバー側の IP アドレスを見つけるにはどうすればよいでしょうか? サーバー側の IP アドレスを (を使用して) クライアントに送信したいsocket.emit('serverSideIp': <server-IP>)
ので、診断目的で、どの特定の IP アドレスが使用されているかを追跡できます。また、socket.io 接続が失敗して別の IP に移動した場合、クライアント側の AJAX 要求をその IP にリダイレクトして、クライアントが同じ項目で別のサーバーと通信しないようにします。
編集: node.js でローカル IP アドレスを取得しても、私の質問には答えません。 「私の IP アドレスのリストは何ですか」という回答がありました。私の質問は、「特定のソケットが与えられた場合、その特定のソケットのローカル アドレス (IP とポート) は何ですか」というものです。マルチホーム ホストでは、OS からアドレスのリストを取得しても答えられません。Java または C# では、ソケットのローカルおよびリモート ポートと IP アドレスを取得するのは簡単です。socket.io「ソケット」接続のためにnode.jsでこれを行うにはどうすればよいですか?