私は、各ブラウザ(IE6/IE7/FF2/FF3など)がリクエストをあきらめてタイムアウトするまでに待機する時間を指定する何らかのドキュメントを探しています。
私はこれを手に入れようとして運がなかった。
ポインタはありますか?
Mozillaのはるかに古いバージョンの network.http.connect.timeout を見つけることができました。
この設定は、HTTPネットワークコードの低レベルの調整を可能にするために追加されたいくつかのオプションの1つです。同じコードの一部が2001年に大幅に書き直された後、選好は効果を失いました(2001年9月にはall.jsに記載されています)。
現在、タイムアウトはシステムレベルの接続確立タイムアウトによって決定されます。この値を構成する方法を追加することは、優先度が低いと見なされます。
network.http.connect.timeout
はしばらくの間何もしていないようです。
network.http.request.timeout
への参照も見たので、 Google検索 を行いました。結果には、他の人がabout:config
に含めることを推奨する人々へのリンクが多数含まれています。同じ検索でこの about:config entries article:
Pref removed(unused) 。以前:HTTP固有のネットワークタイムアウト。デフォルト値は120。
同じページ にはnetwork.http.connect.timeout
に関する追加情報が含まれます:
Pref removed(unused) 。以前:タイムアウトを登録するまで応答を待つ時間を決定します。デフォルト値は30です。
免責事項:MozillaZineナレッジベースの情報は、不正確、不完全、または最新ではない可能性があります。
第一に、あなたの問題に対する解決策は一つだけではないと思います。
ご存知のように、各ブラウザは大きく異なります。
しかし、あなたが必要な答えに近づくことができるかどうかを見てみましょう....
IE簡単かもしれません...
このリンクを確認してください http://support.Microsoft.com/kb/18105
Firefoxの場合:
Firefoxを開き、アドレスバーに「about:config」と入力します(引用符なし)。そこからNetwork.http.keep-aliveまでスクロールダウンし、それが「true」に設定されていることを確認します。そうでない場合は、ダブルクリックすると、falseからtrueになります。次に、その下の1つをnetwork.http.keep-alive.timeoutに移動し、ダブルクリックしてその番号を変更します。たとえば、500を入れると、うまくいくはずです。これがまったく役立つかどうか教えてください
Firefoxの最後の更新後、同じセッションタイムアウトの問題が発生し、次の設定が解決に役立ちました。
network.http.response.timeout
パラメーターで制御できます。
network.http.response.timeout
パラメーターが表示されます。network.http.response.timeout
パラメーターをダブルクリックし、セッションがタイムアウトしないようにする時間値(秒単位)をボックスに入力します。Google chromeのフェッチAPIからリモートエクスプレスサーバーへのソケット接続を維持しようとしていて、リクエストヘッダーがNode.JSのネイティブ<net.socket>
接続設定。
次のオプションを使用して、クライアント側のスクリプトにheadersオブジェクトを設定します。
/* ----- */
head = new headers();
head.append("Connnection", "keep-alive")
head.append("Keep-Alive", `timeout=${1*60*5}`) //in seconds, not milliseconds
/* apply more definitions to the header */
fetch(url, {
method: 'OPTIONS',
credentials: "include",
body: JSON.stringify(data),
cors: 'cors',
headers: head, //could be object literal too
cache: 'default'
})
.then(response=>{
....
}).catch(err=>{...});
そして、エクスプレスサーバーで、次のようにルーターをセットアップしました。
router.head('absolute or regex', (request, response, next)=>{
req.setTimeout(1000*60*5, ()=>{
console.info("socket timed out");
});
console.info("Proceeding down the middleware chain link...\n\n");
next();
});
/*Keep the socket alive by enabling it on the server, with an optional
delay on the last packet sent
*/
server.on('connection', (socket)=>socket.setKeepAlive(true, 10))
[〜#〜] warning [〜#〜]
常識を使用して、ソケット接続を開いたままにしているユーザーが検証およびシリアル化されていることを確認してください。 Firefoxでも機能しますが、TCP接続を5分以上開いたままにすると、非常に脆弱になります。
あまり知られていないブラウザーのいくつかがどのように動作するかはわかりませんが、Microsoftブラウザーの詳細もこの回答に追加します。