2016-07-15 2 views
0

最近、私はWebソケットをDjangoに統合することを検討しています。ドキュメントによると、Channelsを使用して行く方法です。Django Channel Webソケット - Model.objectsにメッセージを追加

は、私は、Webソケットサーバーに接続されている私のWebアプリケーションを持つようにしたい実例モデルクエリ

class Request(models.Model): 
    id = models.IntegerField(name="id", primary_key=True) 
    query = models.CharField(name = 'query', max_length=1024) 

を考えます。 Webソケットサーバーはメッセージを受信すると、そのメッセージをクライアントによって確立されたソケット接続の特定のサブセットにブロードキャストする必要があります。

クライアント(つまりウェブブラウザ)は、ブロードキャストされたメッセージを受信すると、それをRequest.objectsに追加する必要があります。そこから、すべてのクエリのリストはDjangoテンプレートを使用して自動的に更新され、定義されたモデル内ではユーザが明示的に更新する必要はありません。

そこで、私の質問は以下のとおりです(I)チャネルを使用して、私は新たに到着したクエリオブジェクトへQuery.objects追加する方法、(これはジャンゴでウェブソケット接続を扱うの好ましい方法である場合) - Webソケットサーバーに送信する前に既に挿入されているため、オブジェクトをデータベースに格納しないでください。(II)対応するDjangoテンプレートの内容を更新します。

答えて

0

Djangoチャンネルは、DjangoバックエンドをDjangoフロントエンドに接続するための新しい方法です。

私は完全には理解していないよしかし、消費者の関数の内部、あなたがモデルをインポートし、データベースに

# consumers.py 
def hello(message): 
    obj = Request.objects.. 
    obj.save() 
    message.reply_channel.send({ 
     "text": message.content['text'], 
    }) 

を更新し、最後にあなたはjqueryのを使用してテンプレートを更新することができあなたの2番目の質問は...

<p></p> 
socket.onmessage = function(e) { 
    $('p').html(e.data); 
} 
関連する問題