text/event-stream
を受け入れるエンドポイントを持っていますが、基本的に2種類のイベント:stats
とresult
を送信します。サーバーがresult
イベントを送信し、接続を終了すると。Chromeが複数のサーバー送信要求を送信しないようにします
問題は、sseの設計のためにブラウザが接続を再試行することです。これを防ぐために、リトライ値を60000などの高い数値に設定し、結果が得られたらクライアントで接続を閉じます。
問題は、レイテンシが高い(ローカルホストで問題なく動作する)場合、Chromeが複数のリクエストをサーバーに送信することです。 SafariとFirefoxは問題なく動作します。 Chromeでは、[ネットワーク]タブでリクエストが1つしかないため、Chromeがリクエストタイムアウトのためにサーバーに接続しようとしていないと思われます。また、2番目の要求を送信したため、最初の要求を閉じるためにサーバーを待機しません。 Chromeでこの問題が発生する可能性はありますか?
注:サーバー送信要求のエンドポイントと送信元が異なります。通常のHTTPリクエストの場合、ChromeはさらにOPTIONS要求を送信して、SSEに対してはOPTIONSプリフライトリクエストを送信しませんが、SSEはGETリクエストであるため、これは問題ではありません。
上記2つの問題は何らかの形で関連していますか?そして記録のために:すべてのブラウザはクロムだけでなく、オプションのプリフライトを送信する必要があります。 –
@TamasHegedusいいえ、OPTIONSプリフライトを送信しても問題はありません。唯一の問題は、Chromeが2回のSSE要求を送信していることです。しかし、ChromeはSSEのプリフライトリクエストを送信しないため、問題が関連する可能性があると考えました。 –