3

text/event-streamを受け入れるエンドポイントを持っていますが、基本的に2種類のイベント:statsresultを送信します。サーバーがresultイベントを送信し、接続を終了すると。Chromeが複数のサーバー送信要求を送信しないようにします

問題は、sseの設計のためにブラウザが接続を再試行することです。これを防ぐために、リトライ値を60000などの高い数値に設定し、結果が得られたらクライアントで接続を閉じます。

問題は、レイテンシが高い(ローカルホストで問題なく動作する)場合、Chromeが複数のリクエストをサーバーに送信することです。 SafariとFirefoxは問題なく動作します。 Chromeでは、[ネットワーク]タブでリクエストが1つしかないため、Chromeがリクエストタイムアウトのためにサーバーに接続しようとしていないと思われます。また、2番目の要求を送信したため、最初の要求を閉じるためにサーバーを待機しません。 Chromeでこの問題が発生する可能性はありますか?

注:サーバー送信要求のエンドポイントと送信元が異なります。通常のHTTPリクエストの場合、ChromeはさらにOPTIONS要求を送信して、SSEに対してはOPTIONSプリフライトリクエストを送信しませんが、SSEはGETリクエストであるため、これは問題ではありません。

+0

上記2つの問題は何らかの形で関連していますか?そして記録のために:すべてのブラウザはクロムだけでなく、オプションのプリフライトを送信する必要があります。 –

+0

@TamasHegedusいいえ、OPTIONSプリフライトを送信しても問題はありません。唯一の問題は、Chromeが2回のSSE要求を送信していることです。しかし、ChromeはSSEのプリフライトリクエストを送信しないため、問題が関連する可能性があると考えました。 –

答えて

0

この問題は、Google Data Saver拡張機能によって発生しています。リクエストがGoogleのサーバーから送信されているかどうかを確認しなかったのですが、同じリクエストを再度送信したブラウザだけでしたが、この拡張機能を無効にすると問題が解決しました。

関連する問題