Веб-приложение не может подключиться к websocket server

У меня есть веб-приложение, работающее на HTTP-сервере через порт 3000. Это приложение подключено к серверу веб-сокета через порт 9001. Оба WS и HTTP-сервера расположены внутри одной виртуальной машины.

При тестировании приложения локально (внутри виртуальной машины) все работает нормально. И веб-приложение, и сервер WS могут взаимодействовать друг с другом. И приложение, и сервер прослушивают соединение на локальном хосте следующим образом:

Веб-приложение (ReactJS ): const sock = new WebSocket ('ws: // localhost: 9001 /');

Сервер WS (Python): ws = WebsocketServer (host = '127.0.0.1', port = 9001)

При настройке разрешения внешних подключений веб-приложение и сервер WS больше не могут взаимодействовать. Сервер по-прежнему прослушивает соединения на host = '127.0.0.1' . Код внешнего интерфейса веб-приложения изменяется для подключения к машине, на которой работает виртуальная машина (скажем, 123.45.67.890 ):

Веб-приложение (ReactJS): const sock = new WebSocket ('ws: //123.45.67.890:9001/');

Я включил переадресацию портов для обоих портов 3000 и 9001 и отключил брандмауэр на обоих портах изнутри виртуальной машины. Оба порта открыты на хост-машине.

Я могу получить доступ к веб-приложению извне, используя 123.45.67.890:3000 , поэтому я почти уверен, что соединение с виртуальной машиной открыто. Однако веб-приложение не взаимодействует с сервером WS через порт 9001. Есть идеи, что может быть причиной этого?

На всякий случай, если информация об ОС будет полезна:

Хост виртуальной машины: Microsoft Windows 7 Enterprise (6.1.7601, пакет обновления 1, сборка 7601)

Гость виртуальной машины: CentOS Linux, выпуск 7.4.1708 (Core)

1
задан 23 November 2017 в 20:51
1 ответ

Это было довольно легко исправить, и это даже написано в документации сервера веб-сокетов , который я использую.

Просто необходимо создать экземпляр сервера WS следующим образом ws = WebsocketServer (host = '0.0.0.0', port = 9001) , чтобы он прослушивал все входящие соединения.

2
ответ дан 3 December 2019 в 20:17

Теги

Похожие вопросы