私がこれを正しく行うことを確認するためだけに。外部の CometD サーバーと連携するように Bayeux クライアントをコーディングしています (ロングポーリング経由)。私のクライアントは、ハンドシェイク、接続、サブスクライブ、接続の順序でリクエストを送信します。後者の接続は、メッセージが利用可能になるまで停止されます。メッセージが来ると、サーバーの応答。すべてが機能します。私はそれを正しくやっていますか?
1 に答える
一般に、クライアントはおよびメッセージadvice
でサーバーから送信された に従う必要があります。/meta/handshake
/meta/connect
/meta/handshake
サブスクリプション メッセージは、応答が成功するまでクライアントによって保持される必要があります。
少なくとも 2 つの接続を使用する必要があるため、特定の順序でリクエストを送信することは正確ではありません。
したがって、/meta/handshake
リクエストが最初に実行されます。/meta/handshake
応答が成功した後、2 つの接続で並行して進むことができます/meta/subscribe
。/meta/connect
最初の/meta/connect
応答が保持されるかどうかは関係ありません。クライアントには、メッセージを処理するメカニズムがあり/meta/connect
、応答を保持するかどうかについてサーバーに影響を与えます/meta/connect
。
CometDでは、ハンドシェイク後にサーバーがまだ生きているかどうかをクライアントが知りたいため、最初の接続/meta/connect
が送信されadvice: { timeout: 0 }
ます (そうしないと、最初の接続が「失われる」可能性があり、クライアントはサーバーと正常に接続されていると考える可能性があります)。 . /meta/connect
また、ハンドシェーク後すぐにチャネル上のクライアント アプリケーションに初めて通知する役割も果たします。