私が作成したAndroidとiOSのネイティブモバイルアプリケーションがいくつかあり、ホストしているXMPPサーバーに直接接続します。XMPPを介してリアルタイムデータをプッシュおよびプルします。また、いくつかのXMPPXEP拡張機能を使用しています。他の操作については、すべてのモバイルアプリケーションがHTTPRESTインターフェイスを介して消費する同じサーバー上で実行されているdjangoアプリケーションがあります。django側でCeleryとRedisを使用して、いくつかの操作を非同期で実行します(データベースへの大量のバッチ書き込みを実行するなど)。
これはすべてうまく機能し、ダンディです。わーい。
しかし今、私はこれらすべてにWebフロントエンドを書きたいので、私は自分の選択肢を研究し始めました-猫の皮を剥ぐ方法はたくさんあるので、最初にSOコミュニティに確認したいと思いました。
ソケット通信用の統一されたAPIを提供する(つまり、Webソケットのさまざまな実装を試すか、フラッシュにフォールバックする)jsライブラリを用意するというアイデアは、私にとって魅力的です。そのため、SocketIOについて言及します。nodejsサーバーを実行する必要があるという考えは、それほど多くはありませんが(もう1つ学ぶべきことです)、必要な場合は間違いなく実行します。ノードサーバーの代わりにgeventを使用する人もいることを私は知っています。他の人は、スタックの残りの部分に接続する小さなnodejsを作成することにしました。私はおそらくこれを行うでしょう。
もう1つのオプションは、フラッシュフォールバックがないと思うStropheのようなjsXMPPライブラリを使用することです。また、これがサーバーにとって何を意味するのかを調査する必要があります。
コメットとジャンゴの実行方法に関するStackoverflowの回答をいくつか読んだので、いくつかのオプションがあるように思われるのはなぜですか。
質問は:
(フォールバックを使用して)Socket IOの動作を利用したい場合、リアルタイムデータをWebクライアント(XMPPを介してサーバーに供給されている)にプッシュし、Djangoを使用する場合の最善のオプションは何ですか?
更新:私が使用しているXMPPサーバーはejabberdで、 BOSHもサポートしています。Strophe.jsを使用できるため、通信はWebSocketではなく一種の長いポーリングhttp接続を経由することになります。私の知る限り、Websocketsオープンソースライブラリを介したXMPPがいくつかありますが、コミュニティはSocketIOほど活発ではありません。
アップデート2:サポートする必要のあるブラウザは最新のブラウザのみです。これは、Flashフォールバックがそれほど重要ではないことを意味していると思います。これにより、私はstrophe.jsに傾倒しています。