0

これはほぼ2日間私を悩ませています。

私は Bayeux クライアントを書いています。Jettyの WebSocket クライアントライブラリを使用し、 Fayeサーバーに接続します。

ハンドシェイク リクエストを使用して、サーバー (すべての localhost) への WS 接続を開きます。

{"channel":"/meta/handshake","supportedConnectionTypes":["long-polling","callback-polling","websocket"],"version":"1.0"}

クライアントはすぐにハンドシェイク応答を受け取ります。

{"channel":"/meta/handshake","successful":true,"version":"1.0","supportedConnectionTypes":["long-polling","cross-origin-long-polling","callback-polling","websocket","eventsource","in-process"],"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","advice":{"reconnect":"retry","interval":0,"timeout":45000}}

次に、クライアントが接続要求を送信します。

{"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","connectionType":"websocket","channel":"/meta/connect"}

次に、サーバーは 45 秒間 (タイムアウトの値) ハングしてから、次の応答を送信します。

{"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","channel":"/meta/connect","successful":true,"advice":{"reconnect":"retry","interval":0,"timeout":45000}}

Faye サーバーがハングする前の最後のログ メッセージ: Ping "l8xhgf0t5gikcukcknhr5npfx11s5w9", 45

しかし、クライアント側で Ping フレームを受信することはありません。サーバーが 45 秒間ハングする理由はわかりませんが、これを解決する必要があります。これを見た人はいますか?ヘルプ/提案/ヒントは大歓迎です:)

4

1 に答える 1

1

発生している動作は、まさに Bayeux サーバーが行うべきことです。

サーバーは「ハング」しません。ロングポーリング方式でリクエストを保持します。

Faye についてはよくわかりませんが、 Bayeux プロトコル仕様を定義したCometD プロジェクトは、同じ方法でサーバーを実装しており、メッセージ要求がタイムアウト値の間保持されます。/meta/connect

于 2015-02-23T19:40:47.717 に答える