Ich versuche, Django-Kanäle durch die Dokumente zu implementieren.
So wie die Dokumentation machen consumers.py
ich binDjango Kanäle websocket.receive wird nicht behandelt
def ws_message(message):
message.reply_channel.send({
"text": message.content['text'],
})
und routing.py
als
from channels.routing import route
from my_proj.consumers import ws_message
channel_routing = [
route("websocket.receive", ws_message),
]
In meiner settings
Datei hinzugefügt ich channel_layers
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgi_redis.RedisChannelLayer",
"CONFIG": {
"hosts": [("localhost", 6379)],
},
"ROUTING": "my_proj.routing.channel_routing",
},
}
Also, wenn ich Runserver und in Chromkonsole senden Sie die folgenden
socket = new WebSocket("ws://" + 192.168.4.177:8000");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("something");
}
ich in manage.py Konsole sehen kann, dass bearbeitetes verbinden WebSocket und die Verbindung hergestellt ist, aber der receive
Teil nicht behandelt wird und nicht in der Konsole so Alarm aus js Code gesehen wird nicht erhoben. Was mache ich falsch?
@UtkarshSinha das hat keine Wirkung. Wieder kann ich die Verbindung aber nicht den Empfang sehen. – arminrock
Versuchen Sie, die Daten im JSON-Format zu senden. Ich denke, es ist wahrscheinlich nicht in der Lage, "Text" aus der Nachricht, wie folgt zu wählen: socket.send (JSON.stringify ({"text": "etwas"})); –
@UtkarshSinha Ich habe versucht, wieder kein Glück. Um es noch einmal zu sagen. Ich denke nicht, dass es ein Problem ist, 'Text' auszuwählen (hauptsächlich, weil das Beispiel aus Channels-Dokumenten stammt). Sie sehen, in einer Konsole von 'manage.py runworker v2' sehe ich' 'runworker - websocket.receive'' debugging msg. Das Senden geht nicht an den Verbraucher. – arminrock