2011-01-27 24 views
6

HTTP経由でリクエストを受け付けるJSON-RPCサーバーを構築しています。クライアントがsubscribe(X)リクエストを送信し、changed(X)リクエストを(ほぼ)リアルタイムで受信するパブリッシュ/サブスクライブアーキテクチャである、双方向通信(クライアントとサーバーの両方がリクエストを送信できる)をサポートしたいと考えています。 HTTP経由のリアルタイム双方向JSON-RPC通信

  • ストリーミング(オープンHTTP接続を維持
  • クッキーベースのセッションモデルを使用して
  • ポーリング呼び出しを

    • ロングポーリング
    • WebSocketを:私の知る限りでは、HTTPでこれを実装するには、いくつかの方法があります)
    • 私が探している何上記

    のいくつかの組み合わせが認められたインターネット標準に基づいているソリューションです。 (可能であれば)ウェブブラウザから利用可能であり、はクライアント側で扱いやすいです。これまではストリーミングを好んでいましたが(Twitter、CouchDBはそうしています)、ブラウザやJSON-RPCライブラリでどれくらいうまくサポートされているか分かりません。また、私が気づいていない他の方法もあります。

    ありがとうございます。

  • 答えて

    3

    私はあなたの仕事を達成するためにsocket.ioを見ておくべきだと思います。このビデオを作者から見たいと思ったら、 "Socket.IO Workshop: Guillermo Rauch"とすることができます。両方のサーバーでクライアントとして作業するのは簡単です。私は簡単なサンプルpubsub using redis on top of socket.ioを作成しました。

    +0

    socket.ioへのリンクありがとう。私のHTTPサーバーコンポーネントはすでに存在していますが(Erlang)、socket.ioのアプローチは非常に刺激的です。 –

    3

    私の知る限り、ストリーミングはFF、Chrome(アプリケーション/オクテットストリームまたはプレリュードのデータ型を必要とするバッファリングの問題があります)およびIE8(少しXDomainRequestを介して)でサポートされています。私はオペラを知らない。

    実際に彗星の業界標準はわかりませんが、Bayeuxがおそらく最も近いでしょう。 facebook/gmail/twitterがすべてのコードが難読化されているので、facebook/gmail/twitterのやり方を見るのは難しいです。すべてのブラウザがすべてをどのように扱うかについて多くの情報を見つけるのは非常に難しいです。

    特殊なサーバーを使用する必要があります。この多くの接続を開いておくと、スレッドプールなどが必要になります。通常のサーバーはかなり高速になります。

    信頼性をもって動作させることができれば、非常に強力な設計です。

    +0

    +1バイユーリンク! – keatch

    +0

    数千の並列接続をサポートすることができ、FriendFeed(現在のFacebook)で使用されているTornadoクレーム。オープンソースのhttp://www.tornadoweb.org/です。 – keatch

    関連する問題