1

私がこれを正しく行うことを確認するためだけに。外部の CometD サーバーと連携するように Bayeux クライアントをコーディングしています (ロングポーリング経由)。私のクライアントは、ハンドシェイク、接続、サブスクライブ、接続の順序でリクエストを送信します。後者の接続は、メッセージが利用可能になるまで停止されます。メッセージが来ると、サーバーの応答。すべてが機能します。私はそれを正しくやっていますか?

4

1 に答える 1

2

一般に、クライアントはおよびメッセージ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また、ハンドシェーク後すぐにチャネル上のクライアント アプリケーションに初めて通知する役割も果たします。

于 2016-06-28T11:17:38.727 に答える