【问题标题】:Django channels socket not connecting to consumerDjango 通道套接字未连接到消费者
【发布时间】:2020-06-10 14:14:37
【问题描述】:

我是套接字编程的新手,我在这里遇到了一个问题。我的客户端没有连接到消费者。

JavaScript 代码

<script>
    // websocket scripts
    var socket = new WebSocket("ws://127.0.0.1:8000/test/")
</script>

路由

application = ProtocolTypeRouter({
    # (http->django views is added by default)
    'websocket': AuthMiddlewareStack(
        URLRouter(
            [
                url(r'^ws/test', consumers.TestConsumer),
            ]
        )
    ),
})

错误

WebSocket connection to 'ws://127.0.0.1:8000/test/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET

【问题讨论】:

    标签: python django python-3.x websocket django-channels


    【解决方案1】:

    您应该尝试ws://127.0.0.1:8000/ws/test-view/ 而不是ws://127.0.0.1:8000/test-view/

    application = ProtocolTypeRouter({
        # (http->django views is added by default)
        'websocket': AuthMiddlewareStack(
            URLRouter(
                [
                    url(r'^ws/test-view', consumers.TestConsumer),
                ]
            )
        ),
    })
    

    这里'webosocket' 定义你正在使用ws:// 协议,但url(r'^ws/test-view', consumers.TestConsumer) 定义你想在localhost 之后添加/ws/test-view/ 来连接它。

    【讨论】:

    • 不幸的是,这不起作用,它似乎在尝试连接之前,并且在出错之前有一点延迟。这立即被拒绝了
    • 你能告诉我django服务器的日志,当你尝试连接它时?另外,你能告诉我你是如何运行 django 服务器的吗?
    • 其实现在是(WebSocket connection to 'ws://127.0.0.1:8000/ws/test-view/' failed: Error during WebSocket handshake: Unexpected response code: 500 (anonymous) @ (index):18
    • python manage.py runserver 运行服务器,终端没有出现错误
    • 这里的url还是ws://127.0.0.1:8000/test-view/
    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2021-03-06
    相关资源
    最近更新 更多