タイムアウトを取得せずにブラウザに応答する前に待つことができる安全な時間はどれくらいですか?
-
20-09-2019 - |
質問
私は、サーバーからクライアントへの「プッシュ」をエミュレートするために、ロングポリングで動作するチャットアプリケーションを作成しています。
基本的に、ブラウザはアップデートを要求し、何か新しいものがあるかどうか返信します。それ以外の場合は、送り返すものがあるまで応答せずに接続を開いたままにします。
さて、30秒が経過していて、私が何も送信していない場合、私は基本的に「NONEWS」と言って応答を送信し、クライアントは再び投票します。
私がやりたいことは、ブラウザがタイムアウトして私をあきらめる前に、できるだけ長く返信せずにこの接続を保持することです...クライアントのタイムアウトが各ブラウザのものであるものについて良いドキュメントを見つけていません。そして、それは彼ら全員にとって同じようには見えません...
誰もが長期間のアプリケーションを作ったことがありますか?
最も長い安全なタイムアウトは何であるかというアイデアはありますか?
ありがとう!
解決
ブラウザは、XHRのタイムアウトを検出し、別のリクエストを行う必要があります。
アップデート:
何らかの理由で組み込まれていないため、XHRでのタイムアウトの検出は実際には複雑です。もちろん、502/503の応答なども処理する必要があります。
他のヒント
読み取りタイムアウトはブラウザ間で異なります。たとえば、これらはIEのデフォルト値です。
Internet Explorer 4.0 and Internet Explorer 4.01 - 5 minutes
Internet Explorer 5.x and Internet Explorer 6.x - 60 minutes
Internet Explorer 7 and Internet Explorer 8 - 60 minutes
ご覧のとおり、残業が大きくなります。
長い世論調査では、タイムアウトはあなたの友達です。避けるのではなく、それを利用する必要があります。タイムアウトとは、ブラウザで可能な限り長い投票をしていることを意味します。タイムアウトは、長い投票なしでも処理する必要があるエラーであるため、余分な負担はありません。
あなたはこの質問に対する私の回答を読んでほしいかもしれません、
モバイルクライアント向けですが、ほとんどのルールはAjax Long Pollingにも適用されます。具体的には、通知システムの恩恵を受けると思います。そのため、イベント通知にのみ長いポーリングが使用され、すべての内容がまだ正常に引かれています。