web-dev-qa-db-ja.com

WebアプリがWebSocketサーバーに接続できない

ポート3000のHTTPサーバーでWebアプリを実行しています。このアプリはポート9001のWebSocketサーバーに接続されています。WSサーバーとHTTPサーバーの両方が同じVM内にあります。

アプリをローカル(VM内)でテストすると、すべて正常に動作します。 WebアプリとWSサーバーの両方が相互に通信できます。次のように、アプリとサーバーの両方がlocalhostで接続をリッスンします。

Webアプリ(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_としましょう):

Webアプリ(ReactJS):const sock = new WebSocket('ws://123.45.67.890:9001/');

ポート3000と9001の両方でポート転送を有効にし、VM内から両方のポートでファイアウォールを無効にしました。ホストマシンで両方のポートが開いています。

_123.45.67.890:3000_を使用して外部からWebアプリにアクセスできるので、VMへの接続が開いていることは確かです。ただし、Webアプリはポート9001のWSサーバー。これの原因は何か考えがありますか?

OS情報が役立つ場合に備えて:

VMホスト:Microsoft Windows 7 Enterprise (6.1.7601 Service Pack 1 Build 7601)

VMゲスト:CentOS Linux release 7.4.1708 (Core)

2
Maxim Mikhaylov

これは簡単に修正でき、私が使用している websocket server のドキュメントにも書かれています。

次のws = WebsocketServer(Host='0.0.0.0', port=9001)のようにWSサーバーをインスタンス化して、すべての着信接続をリッスンする必要があるだけです。

3
Maxim Mikhaylov