【发布时间】:2013-04-21 03:58:43
【问题描述】:
最终,这里的目标是使用 socket.io 处理 DNS 循环,以协调不同的连接(socket.io 和 jQuery ajax),以便当一个名称映射到多个服务器时它们会转到同一服务器。
使用此代码,我可以找到传入 websockets 连接的客户端端 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,这样客户端就不会同时与不同的服务器通信。
编辑:Get local IP address in node.js 没有回答我的问题。 回答是,“我的 IP 地址列表是什么。”我的问题是,“给定一个特定的套接字,该特定套接字的本地地址(IP 和端口)是什么”,在多宿主主机上无法通过从操作系统获取地址列表来回答。在 Java 或 C# 中,获取套接字的本地和远程端口以及 IP 地址是微不足道的。你如何在 node.js 中为 socket.io“socket”连接做到这一点?
【问题讨论】:
-
我不确定这是否可行,但您是否尝试过
server.address()? -
server.address() 返回:
{ address: '0.0.0.0', family: 'IPv4', port: 80 } -
更新了问题,使其更加清晰。我的问题完全不是重复的。我想知道,给定一个特定的连接(套接字),该套接字的本地地址(IP 和端口)是什么?我已经可以得到远程端的IP和端口了。
标签: node.js express websocket socket.io