来自localhost的nodejs websockets连接可以正常工作,但远程不是

时间:2018-02-21 23:51:46

标签: node.js websocket

我在nodejs中运行一个简单的websocket服务器

const WebSocket = require('ws');

const wss = new WebSocket.Server({ host: '0.0.0.0', port: 13000 });

wss.on('connection', function connection(ws) {

        console.log("new connection");

        ws.on('message', function incoming(message) {
                      console.log('received: %s', message);
                    });

        ws.on('error', function(e) {
                console.log('error', e);
        });

        ws.on('close', function(e) {
                console.log('close', e);
        });

        ws.send('something');
});

我可以使用以下方式连接到服务器:

s=new WebSocket('ws://localhost:13000')

一切都很好。但是,如果我尝试从另一台计算机连接:

s=new WebSocket('ws://serveripaddress:13000')

服务器显示

new connection
close 1006

所以我知道客户端连接,但它会立即断开连接。我完全迷失在这里,不知道如何诊断我的问题。有什么想法吗?

更新

这些方案有效:

  • 两个ec2实例:工作
  • 通过仅限主机网络进行通信的两个Linux VM:正常工作

这些失败了:

  • Windows主机和VM(仅限主机网络):失败
  • 一个ec2实例和我的一个虚拟机:失败

这是一个奇怪的部分,如果我使用' net'创建一个简单的套接字服务器,以上所有方案都可以工作!所以它似乎仍然是一个网络问题(因为websockets在某些情况下工作)但它是一个特定于websockets的网络问题(因为套接字服务器在websocket不工作的地方工作)!

我无法访问我的Windows主机所在的防火墙,所以如果这是问题,那么我就会陷入困境。但我会在可以访问防火墙的不同主机上尝试这一切。

但如果它是防火墙,我会在Windows主机和VM之间工作,因为它们在自己的虚拟网络上......

0 个答案:

没有答案