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. Когда я понизил версию, это решило мою проблему.

Вернуться на верх