Django 频道 - 回声示例不起作用
Django channels - Echo example not working
我正在按照 documentation site 中的说明进行操作,但我卡在了 echo 示例中,websocket 已正确创建并且已连接到服务器,但是当我向服务器发送任何内容时,我没有得到任何响应(在示例中说我应该看到一个警报 window,其中包含我发送到套接字中的相同消息,但我没有,尽管我已经将警报更改为 console.log 但是仍然),我做错了什么?
在settings.py:
INSTALLED_APPS = {
...
'channels',
'myapp',
...
}
...
# Channels settings
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgiref.inmemory.ChannelLayer",
"ROUTING": "myapp.routing.channel_routing",
},
}
在routing.py:
from channels.routing import route
from myapp.consumers import *
channel_routing = [
route("websocket.receive", ws_receive),
]
在consumers.py:
def ws_receive(message):
# ASGI WebSocket packet-received and send-packet message types
# both have a "text" key for their textual data.
message.reply_channel.send({
"text": message.content['text'],
})
在asgi.py
import os
from channels.asgi import get_channel_layer
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
channel_layer = get_channel_layer()
然后我 运行: python manage.py 运行 服务器,然后在我的浏览器中转到服务器 url 并在控制台中输入以下:
socket = new WebSocket("ws://" + window.location.host + "/chat/");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("hello world");
}
同样,此时我应该看到警告 window(或 console.log 消息),但我什么也没得到。
我提出的请求处于待处理状态(尽管我阅读 here 并且第一条评论说这是正常的)
服务器输出如下所示:
每次我尝试通过浏览器中的 websocket 发送内容时,服务器只打印 CONNECT 但没有显示来自 js 控制台的日志。
编辑:我已经在我的浏览器中针对 echo.websocket.org 测试了 websockets,我得到了预期的答案:
我改用旧版本的 twisted 并修复了它。 Hth
我正在按照 documentation site 中的说明进行操作,但我卡在了 echo 示例中,websocket 已正确创建并且已连接到服务器,但是当我向服务器发送任何内容时,我没有得到任何响应(在示例中说我应该看到一个警报 window,其中包含我发送到套接字中的相同消息,但我没有,尽管我已经将警报更改为 console.log 但是仍然),我做错了什么?
在settings.py:
INSTALLED_APPS = {
...
'channels',
'myapp',
...
}
...
# Channels settings
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgiref.inmemory.ChannelLayer",
"ROUTING": "myapp.routing.channel_routing",
},
}
在routing.py:
from channels.routing import route
from myapp.consumers import *
channel_routing = [
route("websocket.receive", ws_receive),
]
在consumers.py:
def ws_receive(message):
# ASGI WebSocket packet-received and send-packet message types
# both have a "text" key for their textual data.
message.reply_channel.send({
"text": message.content['text'],
})
在asgi.py
import os
from channels.asgi import get_channel_layer
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
channel_layer = get_channel_layer()
然后我 运行: python manage.py 运行 服务器,然后在我的浏览器中转到服务器 url 并在控制台中输入以下:
socket = new WebSocket("ws://" + window.location.host + "/chat/");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("hello world");
}
同样,此时我应该看到警告 window(或 console.log 消息),但我什么也没得到。
我提出的请求处于待处理状态(尽管我阅读 here 并且第一条评论说这是正常的)
服务器输出如下所示:
每次我尝试通过浏览器中的 websocket 发送内容时,服务器只打印 CONNECT 但没有显示来自 js 控制台的日志。
编辑:我已经在我的浏览器中针对 echo.websocket.org 测试了 websockets,我得到了预期的答案:
我改用旧版本的 twisted 并修复了它。 Hth