Django WebSocket не работает внутри контейнера, но работает вне его
Я пытаюсь сделать подключение к вебсокету из html-страницы в django. Это работает, когда я запускаю его вне контейнера, но перестает работать внутри него .
Мой сервер внутри моего docker compose.
server:
stdin_open: true # docker run -i
tty: true # docker run -t
build:
dockerfile: server.Dockerfile
context: ./
volumes:
- /home/$USER/.ssh:/root/.ssh
ports:
- '8000:8000'
networks:
drone_net:
ipv4_address: 10.10.10.2
url, который я использую в своей html-странице
let url = `ws://localhost:8000/ws/socket-server/`
Ошибка, которую я получаю: WebSocket соединение с 'ws://localhost:8000/ws/socket-server/' failed:
Это моя маршрутизация для вебсокета :
websocket_urlpatterns=[
re_path(r'ws/socket-server/',consumers.ChatConsumer.as_asgi())
]
Сначала я подумал, что это localhost не работает, но мой http запрос работает и в локалке.
Я пробовал менять значения url на разные. Я думал, что это localhost не работает должным образом, но я также использую local host для http запроса и они были в порядке в контейнере. Я ожидал, что это сработает.
Я нашел решение. Странно, но это была проблема с пакетом channel Version. В файле докера я взял самую последнюю версию channels: 4.0.0. В то время как мой локальный компьютер использовал channels.version 3.0.5. Когда я понизил версию, это решило мою проблему.