O aplicativo da Web não pode se conectar ao servidor websocket

1

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)

    
por Max Lawnboy 23.11.2017 / 19:23

1 resposta

1

Isso foi muito fácil de corrigir e até está escrito nos documentos do servidor de websocket que estou usando .

Só é necessário instanciar o servidor WS da seguinte maneira ws = WebsocketServer(host='0.0.0.0', port=9001) para que ele escute todas as conexões de entrada.

    
por 23.11.2017 / 22:24