我尝试使用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);
当我在我的电脑或一些使用我的路由器连接的其他计算机上进行测试时,一切正常。但是通过互联网访问的其他客户端无法建立连接。当然,他们使用的是公共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服务器。这个问题真的让我很困惑。