fragen stichworte

Web-App kann keine Verbindung zum Websocket-Server herstellen

Ich habe eine Web-App, die auf HTTP-Server an Port 3000 ausgeführt wird. Diese App ist mit einem Websocket-Server an Port 9001 verbunden. WS- und HTTP-Server befinden sich in derselben VM.

Wenn Sie die App lokal (in VM) testen, funktioniert alles einwandfrei. Sowohl Web-App als auch WS-Server können miteinander kommunizieren. Sowohl die App als auch der Server überwachen auf localhost wie folgt eine Verbindung:

Web-App (ReactJS): const sock = new WebSocket('ws://localhost:9001/');

WS-Server (Python): ws = WebsocketServer(host='127.0.0.1', port=9001)

Bei der Einrichtung von externen Verbindungen können Web-App und WS-Server nicht mehr kommunizieren. Der Server wartet weiterhin auf Verbindungen unter host='127.0.0.1'. Der Front-End-Code der Web-App wurde geändert, um eine Verbindung zu einem Computer herzustellen, auf dem VM ausgeführt wird (beispielsweise 123.45.67.890):

Web-App (ReactJS): const sock = new WebSocket('ws://123.45.67.890:9001/');

Ich habe die Portweiterleitung für die Ports 3000 und 9001 aktiviert und die Firewall an beiden Ports von der VM aus deaktiviert. Beide Ports sind auf der Hostmaschine offen.

Ich kann mit 123.45.67.890:3000 von außen auf die Web-App zugreifen, daher bin ich ziemlich sicher, dass die Verbindung zur VM geöffnet ist. Die Web-App kommuniziert jedoch nicht mit dem WS-Server an Port 9001. Irgendwelche Ideen, was die Ursache sein könnte?

Nur für den Fall, dass Informationen zum Betriebssystem hilfreich sind:

VM-Host: Microsoft Windows 7 Enterprise (6.1.7601 Service Pack 1 Build 7601)

VM-Gast: CentOS Linux release 7.4.1708 (Core)

antworten

Das war ziemlich einfach zu beheben und wurde sogar in den Dokumenten des Websocket-Servers geschrieben, den ich verwende.

Nur erforderlich, um den WS-Server wie folgt zu instanziieren ws = WebsocketServer(host='0.0.0.0', port=9001), damit er alle eingehenden Verbindungen abhört.