2016-08-03 19 views
0

我遵循channels documentation提供的示例代碼並遇到問題。 django服務器成功接受來自瀏覽器的websocket並且發送似乎正常工作。然而,消息(ws_message)的服務器端處理似乎沒有發生,並且沒有回覆(也沒有任何警報)在瀏覽器端註冊。Django頻道:回聲示例問題

Sending seems to work, but no reply

此行爲是非常類似於在Django channels - Echo example not working觀察。然而,雖然切換到扭曲的16.2.0是解決方案,我已經扭曲了16.2.0。

代碼摘要如下:

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" 
    } 
} 

Django的開發服務器然後運行(manage.py runserver命令)和下述通過瀏覽器執行控制檯:

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"); 
} 

在接收到消息時,警報應給予和控制檯記錄到。但是,都不會發生。

回答

0

您應該將ws_message消費者連接到websocket.receive而不是websocket.recieve

+0

再次,pebkac。感謝您的協助。 – klim314