Django 通道套接字未连接到消费者
Posted
技术标签:
【中文标题】Django 通道套接字未连接到消费者【英文标题】:Django channels socket not connecting to consumer 【发布时间】: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
【问题讨论】:
【参考方案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/
以上是关于Django 通道套接字未连接到消费者的主要内容,如果未能解决你的问题,请参考以下文章
Django DRF websocket 通道 2 并使用来自 Simple JWT 的令牌进行授权
创建第一个 Celery 任务 - Django。错误 - “错误/MainProcess] 消费者:无法连接到 amqp://guest:**@127.0.0.1:5672//:”