2016-08-03 8 views
0

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.

Antwort

0

Sie sollten ws_message Verbraucher an websocket.receive nicht websocket.recieve anschließen.

+0

Und noch einmal, Pebkac. Danke für die Hilfe beim Einfangen. – klim314