Eu tenho um aplicativo da web em execução no servidor HTTP na porta 3000. Esse aplicativo está conectado a um servidor websocket na porta 9001. Os servidores WS e HTTP estão localizados dentro da mesma VM.
Ao testar o aplicativo localmente (dentro da VM), tudo funciona bem. O aplicativo da web e o servidor do WS podem se comunicar entre si. Tanto o aplicativo quanto o servidor escutam uma conexão no host local da seguinte forma:
Aplicativo da Web (ReactJS): const sock = new WebSocket('ws://localhost:9001/');
Servidor WS (Python): ws = WebsocketServer(host='127.0.0.1', port=9001)
Ao configurar isso para permitir conexões externas, o aplicativo da Web e o servidor WS não podem se comunicar mais. O servidor ainda escuta conexões em host='127.0.0.1'
. O código de frontend do aplicativo da Web é alterado para se conectar a uma máquina em que a VM é executada (digamos, 123.45.67.890
):
Aplicativo da Web (ReactJS): const sock = new WebSocket('ws://123.45.67.890:9001/');
Eu habilitei o encaminhamento de portas para as portas 3000 e 9001 e desabilitei o firewall em ambas as portas de dentro da VM. Ambas as portas estão abertas na máquina host.
Eu posso acessar o aplicativo da web do lado de fora usando 123.45.67.890:3000
, por isso, tenho certeza de que a conexão com a VM está aberta. No entanto, o aplicativo da Web não se comunica com o servidor WS na porta 9001. Tem alguma idéia do que pode ser a causa disso?
Apenas para o caso de a informação do SO ser útil:
Host da VM: Microsoft Windows 7 Enterprise (6.1.7601 Service Pack 1 Build 7601)
Convidado da VM: CentOS Linux release 7.4.1708 (Core)