Web 应用程序无法连接到 websocket 服务器

Max*_*lov 2 windows-server-2008 firewall virtual-machines port-forwarding websocket

我有一个在端口 3000 上的 HTTP 服务器上运行的 Web 应用程序。该应用程序连接到端口 9001 上的 websocket 服务器。WS 和 HTTP 服务器都位于同一虚拟机内。

在本地测试应用程序(在虚拟机内)时,一切正常。Web 应用程序和 WS 服务器都可以相互通信。应用程序和服务器都侦听本地主机上的连接,如下所示:

网络应用程序(ReactJS):const sock = new WebSocket('ws://localhost:9001/');

WS 服务器(Python):ws = WebsocketServer(host='127.0.0.1', port=9001)

当将此设置为允许外部连接时,Web 应用程序和 WS 服务器无法再进行通信。服务器仍在侦听 上的连接host='127.0.0.1'。Web 应用程序前端代码已更改为连接到运行 VM 的计算机(假设123.45.67.890):

网络应用程序(ReactJS):const sock = new WebSocket('ws://123.45.67.890:9001/');

我为端口 3000 和 9001 启用了端口转发,并从虚拟机内部禁用了这两个端口上的防火墙。主机上的两个端口均已打开。

我可以使用从外部访问 Web 应用程序123.45.67.890:3000,因此我非常确定与虚拟机的连接已打开。但是,Web 应用程序无法在端口 9001 上与 WS 服务器进行通信。您知道这可能是什么原因吗?

以防万一操作系统信息有帮助:

虚拟主机:Microsoft Windows 7 Enterprise (6.1.7601 Service Pack 1 Build 7601)

虚拟机访客:CentOS Linux release 7.4.1708 (Core)

Max*_*lov 5

这很容易修复,甚至写在我正在使用的websocket 服务器的文档中。

只需按如下方式实例化 WS 服务器,ws = WebsocketServer(host='0.0.0.0', port=9001)以便它侦听所有传入连接。