Django 频道 websocket.receive 未处理
Django channels websocket.receive is not handled
我正在尝试通过文档实现 Django 通道。
就像我正在制作的文档一样 consumers.py
def ws_message(message):
message.reply_channel.send({
"text": message.content['text'],
})
和 routing.py
作为
from channels.routing import route
from my_proj.consumers import ws_message
channel_routing = [
route("websocket.receive", ws_message),
]
在我的 settings
文件中添加了 channel_layers
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgi_redis.RedisChannelLayer",
"CONFIG": {
"hosts": [("localhost", 6379)],
},
"ROUTING": "my_proj.routing.channel_routing",
},
}
因此,当我运行服务器并在 chrome 控制台中发送以下内容时
socket = new WebSocket("ws://" + 192.168.4.177:8000");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("something");
}
我可以在 manage.py 控制台中看到 Websocket 连接工作并且连接已建立,但是 receive
部分未被处理并且在控制台中看不到,因此不会引发来自 js 代码的警报.那我做错了什么?
问题出在 Twisted 的版本上。到目前为止,它的最新版本是 16.3.0,但频道需要 16.2.0 版本。因此,对于 16.2.0 版本的 Twisted,它可以正常工作。
我正在尝试通过文档实现 Django 通道。
就像我正在制作的文档一样 consumers.py
def ws_message(message):
message.reply_channel.send({
"text": message.content['text'],
})
和 routing.py
作为
from channels.routing import route
from my_proj.consumers import ws_message
channel_routing = [
route("websocket.receive", ws_message),
]
在我的 settings
文件中添加了 channel_layers
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgi_redis.RedisChannelLayer",
"CONFIG": {
"hosts": [("localhost", 6379)],
},
"ROUTING": "my_proj.routing.channel_routing",
},
}
因此,当我运行服务器并在 chrome 控制台中发送以下内容时
socket = new WebSocket("ws://" + 192.168.4.177:8000");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("something");
}
我可以在 manage.py 控制台中看到 Websocket 连接工作并且连接已建立,但是 receive
部分未被处理并且在控制台中看不到,因此不会引发来自 js 代码的警报.那我做错了什么?
问题出在 Twisted 的版本上。到目前为止,它的最新版本是 16.3.0,但频道需要 16.2.0 版本。因此,对于 16.2.0 版本的 Twisted,它可以正常工作。