WebSocket ['172.18.0.1', 53588] 被应用拒绝

问题描述 投票:0回答:0

在我的项目中,用户需要通过带有令牌的中间件进行身份验证才能连接到消费者,当我打开与失眠的连接时,它与 virtualvenv 一起工作正常,但是当我尝试使用 docker 运行项目并连接到消费者时,我得到这个错误:

WebSocket ['172.18.0.1', 53588] rejected by application

这是我根据文档进行的设置:

在 asgi.py 中

application = ProtocolTypeRouter({
    # Django's ASGI application to handle traditional HTTP requests
    "http": django_asgi_app,

    # WebSocket chat handler
    "websocket": AllowedHostsOriginValidator(
        AuthMiddlewareStack(
            URLRouter([
                # path("chat/admin/", AdminChatConsumer.as_asgi()),
                # path("chat/", PublicChatConsumer.as_asgi()),
                re_path(r'poll/(?P<room_name>\w+)/$',PollConsumer.as_asgi()),
            ])
        ),
    ),
})

docker-compose-yml :

services:
    myservice:
        build:
            context: .
            dockerfile: Dockerfile
        volumes:
            - ./:/app
            - /store/event/media:/app/media
            - /store/event/static:/app/static
        

        env_file:
          - ./envs/development.env


        command:
          
            daphne myproject.asgi:application --port 8001 --bind 0.0.0.0 -v2
         
          
        ports:
          - 8001:8001

        depends_on:
          - event-database
          - redis
    redis:
        image: redis:latest
        ports:
            - "6379:6379"

我已经设置了 ALLOWED_HOSTS=['*'] 但是当我尝试连接到路由 url 时我被应用程序拒绝了

网址:

ws://localhost:8001/poll/11/?token=token

这是 routing.py :

websocket_urlpatterns = [
    re_path(r'poll/(?P<room_name>\w+)/$', consumers.PollConsumer.as_asgi()),

]
websocket django-channels
© www.soinside.com 2019 - 2024. All rights reserved.