2011-01-23 7 views
5

私は答えをコードする人物を探しているわけではありませんが、誰かがnode.jsでDjangoを使ってイベント駆動型のインスタント・アップデートを得る方法の一般的な概要を伝えることができるのだろうかと思っていました。Djangoでイベントベースの更新にnode.jsを使用しますか?

私は「ニュースフィード」を持っています。新しいアイテムが入ったら、そのフィードを更新したいと思います。私が持っている一般的な考え方は、javascript経由でノードサーバーへの接続を開くだけです。ノードサーバー "スリープ"新しい項目が来るまで、それはデータを返し、Django側は別の接続を開始します。

私は実際にnode.jsコードを書くことになると混乱します。ドキュメントには多くの情報が表示されますが、その情報の使い方は示されていません。もし誰かが私にこれを探す場所に向けることができたら、私はそれを感謝します - 私はEventEmitterのようなものを使用しますか? Django側のスクリプトでノードサーバーに特定のユーザーに関するイベントだけをリッスンするように要求するにはどうすればよいですか?

ありがとうございます!

答えて

2

node.jsコードを記述することに不快感がある場合は、長時間実行されるHTTP要求をサポートするために特別にビルドされたPythonベースのサーバーを調べる必要があります。

竜巻もその中にあり、Djangoをその中で実行できます(例:http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/)。そのCPU /メモリ使用量はnode.jsほど魅力的ではないかもしれませんが、一見価値があります!

7

私はそれを理解したと思います。私は自分のエミッタを作り、自分のイベントを聞いていました。

var myemitter = new events.EventEmitter(); 

とDjangoからのリクエストが来たとき、

myemitter.addListener('action'+userid,function(data){ 
    //do something with data 
} 

その要求にはJavaScriptだろう、本質的に長いポーリングを通じて$.ajax()コールによることと何かが起こったまで待つでしょう。サーバー上で何かが起こったとき、つまりユーザーが何かをしたとき、サーバーはノードに投稿します。要求により、イベントが発行されます。

myemitter.emit('action'+userid,data); 

...これにより、2番目のコードピースからコールバック関数が呼び出されます。次に、そのリクエストに関連付けられたレスポンスオブジェクトを検索し、情報を返し、Django側のスクリプトによって解析されます。

これは誰かを助けてくれることを願っています。答えを投稿すると思っています。

関連する問題