Ich befolge die Beispielcode von der channels documentation zur Verfügung gestellt und ein Problem aufgetreten. Der Django-Server akzeptiert erfolgreich einen Websocket vom Browser und das Senden scheint zu funktionieren. Die serverseitige Verarbeitung der Nachricht (ws_message) scheint jedoch nicht aufzutreten, und keine Antwort (noch keine Warnung) ist browserseitig registriert.Django Kanäle: Echo Beispiel Ausgaben
Sending seems to work, but no reply
Dieses Verhalten ist sehr ähnlich der in Django channels - Echo example not working beobachtet. Während jedoch die Umstellung auf Twisted 16.2.0 die Lösung für diesen Fall war, bin ich bereits auf 16.2.0 verdrillt.
-Code-Schnipsel sind wie folgt:
consumers.py
from django.http import HttpResponse
from channels.handler import AsgiHandler
def ws_message(message):
print("sending message ", message.content["text"])
raise
message.reply_channel.send({
"text": message.content["text"]
})
routing.py
from channels.routing import route
from channel_test.consumers import ws_message
channel_routing = [
route("websocket.recieve", ws_message),
]
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"channels",
"channel_test",
"argent_display"
]
CHANNEL_LAYERS = {
"default":{
"BACKEND": "asgiref.inmemory.ChannelLayer",
"ROUTING": "argent_display.routing.channel_routing"
}
}
Der django Dev-Server wird dann ausgeführt (manage.py runserver) und folgenden über den Browser-Konsole ausgeführt:
socket = new WebSocket("ws://" + window.location.host + "/chat/");
socket.onmessage = function(e) {
console.log('test');
alert(e.data);
}
socket.onopen = function() {
socket.send("hello world");
}
Nach Empfang einer Nachricht, sollte eine Warnung gegeben werden, und die Konsole angemeldet. Jedoch tritt keines auf.
Und noch einmal, Pebkac. Danke für die Hilfe beim Einfangen. – klim314