【发布时间】:2014-03-25 14:13:33
【问题描述】:
我尝试使用 nodejs ws (einaros) 创建聊天,这是我的代码:
服务器:
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 80 });
wss.on('connection', function(ws) {
console.log('connecting count:' + wss.clients.length);
});
客户:
var hostname = location.hostname;
var port = 80;
var url = 'ws://'+hostname+':'+port+'/';
window.WebSocket = window.WebSocket || window.MozWebSocket;
var w = new WebSocket(url);
当我用我的电脑或与我的路由器连接的其他电脑进行测试时,它运行良好。但是,通过 Internet 访问的其他客户端无法建立连接。当然,他们使用的是公网 IP,比如 218.xxx.xxx.xxx,而不是 192.168.xxx.xxx。
我想知道如何解决这个问题。
谢谢你的回答。但是,它可能不是 NAT 问题。例如,我的公网 IP 是 218.100.50.50,我的私网 IP 是 192.168.1.1。当连接来自我的网络外部并访问 218.100.50.50:80 时,路由器会将其重定向到 192.168.1.1:80。有一个网页可以通过这种方式访问,但仍然无法连接到我的 websocket 服务器。这个问题真的让我很困惑。
【问题讨论】:
标签: node.js networking websocket router portforwarding