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)
这很容易修复,甚至写在我正在使用的websocket 服务器的文档中。
只需按如下方式实例化 WS 服务器,ws = WebsocketServer(host='0.0.0.0', port=9001)
以便它侦听所有传入连接。
归档时间: |
|
查看次数: |
16374 次 |
最近记录: |