ドキュメント サイトの指示に従っていますが、echo の例で行き詰まりました。Websocket は正しく作成され、サーバーに接続されていますが、サーバーに何かを送信しても応答がありません (例ではソケットに送信したのと同じメッセージを含むアラートウィンドウが表示されるはずですが、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),
]
consumer.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 メッセージ) が表示されるはずですが、何も表示されません。
私が行ったリクエストのステータスは保留中です(ただし、ここを読み、最初のコメントではそれが正常であると述べています)
サーバー出力は次のようになります。
ブラウザーで websocket を介して何かを送信しようとするたびに、サーバーは CONNECT を出力するだけですが、js コンソールからのログは表示されません。