Каналы Django - пример Echo не работает
Я следую инструкциям всайт документации, но я застрял в примере эха, веб-сокет создан правильно, и он подключен к серверу, но когда я отправляю что-либо на сервер, я не получаю никакого ответа (В примере говорится, что я должен увидеть окно предупреждения с тем же сообщение, которое я отправляю в сокет, но не делаю, хотя я изменил предупреждение для 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 runserver, и в моем браузере я захожу на URL сервера и в консоли я помещаю следующее:
socket = new WebSocket("ws://" + window.location.host + "/chat/");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("hello world");
}
Опять же, в этот момент я должен увидеть окно предупреждения (или сообщение console.log), но ничего не получаю.
Запросы, которые я сделал, имеют статус ожидающих (хотя я прочиталВот и первый комментарий говорит, что это нормально)
И вывод сервера выглядит так:
Каждый раз, когда я пытался что-то отправить через веб-сокет в браузере, сервер просто печатал CONNECT, но журнал из консоли js не показывался.
Изменить: я протестировал веб-сокеты в моем браузере с echo.websocket.org, и я получил ответ, как и ожидалось: