Разработчик сталкивается с проблемами при попытке контейнеризировать сервер WebSocket с помощью Docker. Код сервера пишет в новое соединение с «connected» и хорошо работает вне контейнера, но при размещении внутри Docker-контейнера клиент паникует из-за ошибки «сброса соединения» с сообщением об ошибке «read tcp [::1] :60328->[::1]:8000: прочитано: сброс соединения с помощью узла." Разработчик не знает, какие изменения необходимы для установки соединения WebSocket с сервером внутри контейнера.
Чтобы решить эту проблему, разработчику необходимо изменить адрес прослушивания сервера. . Вместо использования «localhost:8000», который ограничивает прослушивание сервером IP-адреса 127.0.0.1 внутри контейнера, им следует изменить его на «:8000».
Используя «:8000» в качестве прослушиваемый адрес, сервер будет прослушивать все IP-адреса, назначенные контейнеру. Эта модификация гарантирует, что при пересылке трафика в контейнер по назначенному ему IP-адресу будет прослушивающий сервер, готовый принять соединение.
Docker играет в этом решающую роль. сценарий путем создания правил iptables для пересылки трафика с хост-компьютера в контейнер. Эти правила необходимы для того, чтобы клиент мог взаимодействовать с сервером WebSocket внутри контейнера. По умолчанию контейнеры Docker прослушивают свои внутренние IP-адреса, которые недоступны напрямую с хост-компьютера. Правила iptables, созданные Docker, устраняют этот пробел в общении.
Чтобы просмотреть эти правила iptables, разработчик может использовать следующие команды:
iptables -n -L iptables -t nat -n -L
Внеся упомянутое изменение в адрес прослушивания и поняв принцип пересылки Docker, разработчик может успешно установить соединение WebSocket с сервером в контейнере Docker, разрешив «сброс соединения». » и включить ожидаемое поведение печати «подключено» на стороне клиента.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3