83

WebSocket は人間が話すような双方向通信を提供します。クライアントはサーバーにデータを送信でき、サーバーはいつでもクライアントにデータを送信できます。しかし、リクエストとレスポンスの動作はどうでしょうか? クライアントはサーバーに何かを要求し、応答を待つことができます。Websocket は、クライアント データ (リクエスト) をサーバー データ (レスポンス) にリンクするものを提供していないようです。

それはおそらくサブプロトコルの仕事であり、それを行う方法についていくつかのアイデアがあります(リクエストでIDを送信し、タイムアウト期間内に同じIDで応答を待ちます)。

車輪を再発明せずに時間を節約するために、インターネットで既存のソリューションを探しましたが、関連するものは見つかりませんでした (おそらく悪いキーワード)。

それで、この種の仕事について知っている人はいますか、それとも私は何かを見逃していますか?

4

7 に答える 7

55

WebSocket アプリケーション メッセージング プロトコル (WAMP) https://wamp-proto.org/は、その目的のために生の WebSocket の上に RPC (リモート プロシージャ コール) および PubSub (パブリッシュ & サブスクライブ) メッセージング パターンを提供します。

WAMP は適切な WebSocket サブプロトコルであり、WebSocket をトランスポートとして使用し、JSON をペイロード形式として使用します。RPC は 3 つのメッセージを使用して実装され、これらのメッセージには、非同期 RPC サーバーの応答をクライアントが開始したプロシージャ コールに関連付けるための「呼び出し ID」が含まれています。

免責事項: 私は WAMP といくつかの (オープンソース) WAMP 実装の作成者です。これはオープンなイニシアチブであり、他の人はすでにボートに乗り始めています。最終的には、プロトコルを適切に定義する WAMP RFC が存在するはずですが、まだ初期段階にあります。

于 2012-06-04T14:13:48.753 に答える
14

JSON-RPC 2.0 を使用します。

http://www.jsonrpc.org/仕様

各メッセージは JSON オブジェクトになります。プロトコルは、それが応答 (id と結合) を必要とする呼び出しであるか、通知を必要とするかを示します。

JSON-RPC 対応のアプリケーションは、メッセージ オブジェクトにメソッドが含まれているかどうか (呼び出しを意味するかどうか、応答を意味するかどうか) を簡単に確認できます。

フォールバックとして ajax を使用して、websocket を介して json rpc を処理するための JavaScript ライブラリを構築しようとしています…</p>

于 2013-02-13T15:16:51.450 に答える
2

SwaggerSocketを見てみましょう。これは、すべての主要な Java WebServer でサポートされている REST over WebSockets プロトコルです。

于 2012-07-19T18:37:56.037 に答える
2

msg-rpcを見てください。これは、WebSocket を含む単純なメッセージ インターフェイスを介して双方向の rpc サポートを提供します。

「クライアント要求/サーバー応答」動作をカバーできる単純な rpc だけでなく、Rpc サービスを介した「サーバー要求/クライアント応答」動作もサポートします。

まず、sockjs と socket.io の例があります。

于 2013-10-22T05:18:41.540 に答える