問題タブ [keep-alive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# - HttpWebRequest をリモート アップロード イメージに送信しますか?
数日間、画像を画像ホスト (imgur.com) にリモートアップロードするプログラムを作成しようとしました。Wireshark を使用して、ブラウザーから送信された http 要求をスニッフィングし、同様のヘッダーとパラメーターを使用して HttpWebRequest を作成しました。しかし、サーバーはいつも何か奇妙なものを私に送り返してきます。コードを見てください (このコードは単純化されています):
ここで、アップロード リクエスト (2 番目のリクエスト) をスニッフィングし、ブラウザのリクエストと比較します。違いは 2 つだけです。
ブラウザの「接続」ヘッダー =「キープアライブ」ですが、私のものは存在しません (request.Keep-alive が「true」に設定されていますが、理由はわかりません)
一部のブラウザの Cookie は、私のブラウザには表示されません。
応答は、次のような JSON である必要があります。
しかし、サーバーは特殊文字の山によって私の要求に応答します...上記の2つの違いのどれが私のコードを機能させないのかわかりません。このコードを機能させるのを手伝っていただければ、非常に感謝しています。私は初心者なので、私のコードや式がばかげている場合でも、私を責めないでください。
このコードを機能させるのを手伝ってくれる人はいますか?
P/S: 私は .net フレームワーク 4 を使用しています
linux - HTTPリクエストでHTTPキープアライブを使用する方法
私は最近Webサイトのパフォーマンスを調べていますが、HTTPリクエストを減らすとともに、Webパフォーマンスにはもう1つの大きな要因があります。
サーバーとクライアント間の接続を維持します。
現在、共有ホスティングを使用しているため、KA接続が可能かどうかは非常に疑わしいですが、サイトでさまざまな最適化を実行しながら、ブログを数週間実行するために、すぐに自宅に独自のLinuxテストベッドサーバーをセットアップします。
私が思い切って、自分自身と私のクライアントのためにメディアテンプルから1年間の素敵な光沢のあるホスティングを購入する前のKAでした。
誰かが通常のWebサイトでのKA接続の経験がありますか?もしそうなら、これらの最適化から見たパフォーマンスの向上(大まかな数字)は何ですか?
Linuxサーバーの観点からKAを実装する方法は何ですか?KAはルーター/ファイアウォール中心、サーバー側のコードベース、またはカーネルベースですか?
google-chrome - chrome-すべてのデータが受信されるまで待たない-node.js
node.jsと、後で新しいデータを送信するためにhttp接続を開いたままにしておく可能性を試しています。一方向ソケットのように。
私は次のnode.jshttpサーバーを持っています:
Firefoxでこのサーバーにリクエストを送信すると、番号50に達するまで、毎秒新しい番号が取得されます。
Chromeでは、50秒待ってから、すべての数値を一度に表示します。ChromeでFirefoxと同じ動作を実現するにはどうすればよいですか?
c - SO_KEEPALIVE オプションを適切に使用して、相手側のクライアントがダウンしていることを検出するにはどうすればよいですか?
Linux環境下でのC言語でのソケットプログラミングでSO_KEEPALIVEオプションの使い方を学ぼうとしていました。
サーバーソケットを作成し、ブラウザを使用して接続しました。成功してGETリクエストは読めたのですが、SO_KEEPALIVEの使い方で行き詰まりました。
このリンクkeepalive_description@tldg.orgを確認しましたが、使用方法を示す例が見つかりませんでした。
accept()
関数でクライアントの要求を検出するとすぐに、クライアント ソケットにSO_KEEPALIVE
オプション値を設定します。1
クライアントがダウンしているかどうかを確認する方法、送信されるプローブ間の時間間隔を変更する方法など、わかりません。
つまり、クライアントがダウンしているというシグナルをどのように受け取るのでしょうか? (クライアントで読み取りまたは書き込みを行わなくても、プローブがクライアントから返信されない場合にシグナルを受け取ると思いました)、オプション SO_KEEPALIVE をオンに設定した後、どのようにプログラムする必要がありますか)。
また、プローブが 3 秒ごとに送信され、その間にクライアントがダウンした場合、クライアントがダウンしていることを認識できず、SIGPIPE が発生する可能性があります。
とにかく重要なのは、コードで SO_KEEPALIVE を使用する方法を知りたいということです。
facebook - api.facebook.comへのリクエストなしでFiddlerでapi.facebook.comのキープアライブリクエストが表示されるのはなぜですか?
さて、質問は少し嘘です。私のウェブページはhttps:api.facebook.comへのリクエストを行います。しかし、これが私を困惑させているものです。Fiddlerを開いて、ページを読み込みます。私のページは、ある時点でapi.facebook.comにリクエストを送信します。ページからのリクエストがまったくなくなるまで待ちます。ページを更新すると、ページがコードにヒットしてapi.facebook.comにリクエストを送信するかなり前に、Fiddlerにapi.facebook.com:443へのキープアライブリクエストが表示されます。応答にはサーバー証明書情報が含まれています。実際、ブラウザにページをリロードするように指示した後、ページ自体がフェッチされる前に(Fiddlerによると)、これらのリクエストがいくつか表示されることがよくあります。Chromeでテストした場合、Chromeのネットワークコンソールにリクエストが表示されません。キャッシュとCookieをクリアして更新すると、
助けてくれてありがとう。
python - retrbinary中にスレッド化された「NOOP」コマンド
残念ながら、ファイアウォールの背後にあるサーバーを処理する必要があるFTPスクリプトを作成しました。また、ファイアウォールのいずれかの側にどのような種類のタイムアウト設定を設定しても、ISPは制御接続をかなり早期に切断します。私はついに2つの選択肢にたどり着きました。1)ダウンロードの完了中に「NOOP」がn秒ごとに送信されるようにretrbinaryコマンドでコードをフォークするか、2)スクリプトがローカルファイルのサイズとリモートファイルのサイズを比較するようにretrbinaryコマンドでコードをフォークします。サイズが異なると、次のファイルのダウンロードを試みます。
n秒ごとに「NOOP」を送信する試みを例示するコードを以下に含めました。問題は、スクリプトがisAlive whileループに到達し、ftp.sendcmd('NOOP')を実行すると、処理がハングし、whileループがロックされることです。ファイルはまだTCPポート63xxxにダウンロードされていますが、ポート21の制御接続がロックされています。
スレッドを使用してダウンロード中にファイルサイズを確認する限り、ファイルサイズが完全な値に完全に到達せず、ダウンロードの最後に同じ値にとどまっていたため、失敗しました。
現在の主な問題は、大量のダウンロードを通じて、制御接続を維持することです。何らかの理由で制御接続が切断された場合、ファイル転送がいつ終了したかを知るための適切な方法がスクリプトに必要です。制御接続がないと、サーバーの応答から知る方法がありません。
前もって感謝します。
ajax - キープアライブ Web サイトのテクノロジー スタック
Web サイトの最も一般的なテクノロジ スタックは Lamp です。これは、どこでも利用できることと、プログラミング モデルが非常に単純であることの 1 つで、サーバーへのすべての要求がコードへの 1 つの呼び出しを生成し、HTML の 1 つのチャンクが返されます。
しかし、キープアライブ機能、つまり Javascript フロントエンドへのデータの継続的なライブ ストリームを必要とする Web プログラムの要件を考えてみてください。たとえば、サーバー応答の「接続:キープアライブ」、http://ajaxian.com/archives/mibbit-ajax-based-irc-clientおよびhttp://www.mysqlperformanceblog.com/2006/11から得た印象/12/are-php-persistent-connections-evil/は、Lamp がこのタイプのワークロード用に設計されていないことです。
私の質問は、キープアライブ ワークロードの場合 (これが最適な用語ですか?)、最適なテクノロジ スタックは何ですか?
または、より正確に言えば、信頼性、スケーラビリティの基準による最高のスタックは何ですか(CPU サイクルをいくつか節約することは気にしませんが、数を追加したときに物事が失敗する状況に陥らないようにすることは気にします)優れたハイエンド ハードウェアでもより多くのユーザーを獲得できる) およびユビキタス(安価な GoDaddy スタイルのホスティングを開始できる)?
android - Android WebView XMLHttpRequest キープアライブ
Android WebView で XMLHttpRequests を作成する場合、見かけどおりキープアライブ接続は使用されません。
リクエストが頻繁に行われる場合、私のデスクトップ ブラウザはすべてキープアライブを使用します (たとえば、ページの onload イベントでトリガーされた XMLHttpRequests は、ページの読み込みリクエスト接続のキューに入れられます)。
キープアライブ接続の要件 (タイムアウト、ヘッダーなど) を知っている人はいますか?
どうもありがとう!
macos - ネットワーク接続がない場合の launchd NetworkState
launchd
Mac OS X、特にファイルのセクションのNetworkState
( bool
) キーについて詳しい人はいますか?KeepAlive
.plist
plist が次のように構成されている場合、Mac にネットワーク接続がない場合、man
ページから実行可能ファイルを呼び出す必要があります。launchd
これは問題なく動作するように見えますが、有効なネットワーク接続が確立されると (Mac が少なくとも 1 つの非ループバック IPv4/6 アドレスを持つと定義されます)、実行可能ファイルの呼び出しを停止するlaunchd
必要NetworkState
があります (フラグがそれを防止するため)。
しかし、私が見ている動作は、Mac のネットワーク接続に関係なくlaunchd
、私のプログラムを呼び出し続けることです! フラグを完全に無視しているかのようです。launchd
NetworkState
launchd
ネットワーク接続がないときにのみプログラムを呼び出し、ネットワーク接続が確立されると呼び出しを停止するように、これを機能させる方法を知っている人はいますか?
delphi - idHttpServer (サーバー) および wininet (クライアント) での TCP キープアライブ
idHttpServer を使用して開発された Web サーバー アプリケーションがあります。クライアントが Web サーバーに接続したときに、なんらかの理由で切断された (正常な切断ではない) と、Web サーバーに通知されません。これが通常の動作であることはわかっていますが、クライアントがいつ死ぬかを知る必要があります。
これにはいくつかの方法があります。私は2つの良い方法を知っています:
1 - ハートビート メカニズムを実装します。クライアントソケットは、サーバーがまだ生きていることを通知します (動作させるには、いくつかの作業とコードが必要です)。
2 - TCP キープアライブ。これは、あまり多くのコードや作業を必要としないため、私が最も気に入っている方法です。しかし、これに関していくつか質問がありました。
- これは idHttpServer (サーバー用) と wininet 関数 (クライアント用) で使用できますか?
- それは本当に期待どおりに機能しますか?つまり、クライアントが常に停止すると、サーバーに通知されますか?
- wininetでこれを設定するサンプルはありますか? (これはクライアント側で設定する必要があると思いますよね?)
- クライアントが死んでいることをサーバーに通知するより良い方法はありますか (もちろん indy と wininet を使用)
編集
Delphi 2010 と svn の最後の Indy10 ソース コードを使用しています。