django 频道集成问题,websocket.receive 没有收听
django channels integration issue, websocket.receive not listening
浏览各种博客 post,我正在尝试使用 django 为 websockets 功能实现 django 通道
我正在使用 django 1.9.1
使用这些依赖项集:
asgi-redis==0.10.0
频道==0.12.0
达芙妮==0.11.1
settings.py
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgiref.inmemory.ChannelLayer",
"ROUTING": "test.routing.channel_routing",
},
}
routing.py
from channels.routing import route
from .consumers import websocket_receive
channel_routing = [
route("websocket.receive", websocket_receive, path=r"^/chat/"),
]
consumers.py
def websocket_receive(message):
text = message.content.get('text')
if text:
message.reply_channel.send({"text": "You said: {}".format(text)})
从浏览器控制台运行服务器后,我称之为
socket = new WebSocket("ws://" + window.location.host + "/chat/");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("hello world");
}
在上面的调用中,在运行服务器日志中我可以看到对 websocket 的调用,如下所示:“[2016/11/15 19:35:39] WebSocket CONNECT /chat/ [127.0.0.1:55499]” , 但我的 consumers.py 方法 (websocket_receive) 从未被调用过..
知道我可能哪里出错了吗??
降低 Twisted 版本解决了这个问题,安装的 Twisted 默认版本是 16.5,使用 16.2 解决了它。
浏览各种博客 post,我正在尝试使用 django 为 websockets 功能实现 django 通道
我正在使用 django 1.9.1
使用这些依赖项集: asgi-redis==0.10.0 频道==0.12.0 达芙妮==0.11.1
settings.py
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgiref.inmemory.ChannelLayer",
"ROUTING": "test.routing.channel_routing",
},
}
routing.py
from channels.routing import route
from .consumers import websocket_receive
channel_routing = [
route("websocket.receive", websocket_receive, path=r"^/chat/"),
]
consumers.py
def websocket_receive(message):
text = message.content.get('text')
if text:
message.reply_channel.send({"text": "You said: {}".format(text)})
从浏览器控制台运行服务器后,我称之为
socket = new WebSocket("ws://" + window.location.host + "/chat/");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("hello world");
}
在上面的调用中,在运行服务器日志中我可以看到对 websocket 的调用,如下所示:“[2016/11/15 19:35:39] WebSocket CONNECT /chat/ [127.0.0.1:55499]” , 但我的 consumers.py 方法 (websocket_receive) 从未被调用过..
知道我可能哪里出错了吗??
降低 Twisted 版本解决了这个问题,安装的 Twisted 默认版本是 16.5,使用 16.2 解决了它。