HTTPを介したリアルタイムの双方向JSON-RPC通信
-
26-10-2019 - |
質問
HTTPに対するリクエストを受け入れるJSON-RPCサーバーを構築しています。双方向通信(クライアントとサーバーの両方がリクエストを送信できる)をサポートしたいと思います。特定のユースケースは、クライアントが送信するパブリッシュ/サブスクライブアーキテクチャです。 subscribe(X)
リクエストと受信 changed(X)
(ほぼ)リアルタイムのリクエスト。私の知る限り、HTTPでこれを実装する方法はいくつかあります。
- 長い投票
- WebSockets
- Cookieベースのセッションモデルを使用したポーリングコール
- ストリーミング(HTTP接続を開いたまま)
- 上記のいくつかの組み合わせ
私が探しているのは、受け入れられたインターネット標準(可能であれば)に基づいたソリューションであり、Webブラウザーから使用可能です。 クライアント側で作業しやすい. 。これまでのところ、私はストリーミングのことを好みます(Twitter、CouchDBはそのようにします)が、これがブラウザとJSON-RPCライブラリ内でどれだけうまくサポートされているかについてはわかりません。また、私が知らない他の方法があるかもしれません。
前もって感謝します。
解決
私はあなたが見るべきだと思います socket.io あなたの仕事を達成するために。著者からこのビデオを見たいなら、」Socket.ioワークショップ:Guillermo Rauch"。クライアントとして両方のサーバーで簡単に作業するのは簡単です。簡単なサンプルを作成しました socket.ioの上にRedisを使用したpubsub.
他のヒント
私の知る限り、ストリーミングはFF、Chrome(アプリケーション/Octet-Streamのデータタイプまたは作業前のプレリュードを必要とする問題がある)およびIE8(少しXdomainRequestを介して)によってサポートされています。オペラについては知りません。
私は彗星業界の基準を本当に知りません、 バイユー おそらく最も近いものです。すべてのコードが難読化されているため、Facebook/Gmail/Twitterがどのようにそれを行うかを見るのは困難であり、すべてのブラウザがすべてをどのように処理するかについての多くの情報を見つけることは非常に困難です。
さらに困難なのは、専門的なサーバーを使用する必要があることです。この多くの接続を開いたままにするには、スレッドプーリングなどが必要です。通常のサーバーはかなり速く爆発します。
ただし、確実に動作させることができれば、非常に強力なデザインです。
Javaの実装に興味がある場合は、サンプルアプリとそれに関するブログ投稿を書きました。 Java、Maven、Comet、Bayeux、Springを使用しています。http://jaye.felipera.cloudbees.net/ http://geeks.aretotally.in/thinking-in-reverse-not-taking-orders-from-yo
あなたは見てください jsonrpc-bidirectionalそれは、WebSocket、Worker、WeBRTC、およびHTTPを介した双方向RPCをサポートしており、非常に拡張可能です。