問題タブ [persistent-connection]
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.
html - ブラウザでの最大並列 HTTP 接続?
HTTP サーバー (コメット、リバース AJAX など) への中断された接続をいくつか作成しています。正常に動作しますが、ブラウザは、特定のドメインへの一時停止された 2 つの接続しか同時に許可しないことがわかります。したがって、ユーザーがブラウザの Tab1 で私の Web サイトを見ていて、それを Tab2 でも読み込もうとすると、サイトへの 2 つの許可された接続が使い果たされてしまいます。
HTTPサーバーに次のようなサイトへのアドレスを解決させるワイルドカードドメインのことを行うことができると思います:
それで:
すべてがまだ ( www.example.com/webapp
) を指していますが、ブラウザーはそれらを異なるドメインと見なすため、2 つの接続制限に遭遇しません。これは本当ですか?
それが本当だとしても、すべてのドメインにわたって、ブラウザーごとのアクティブな接続数に制限はありますか? 上記のスキームを使用するとします。たとえば、Firefox では常に 24 の並列接続しか許可されませんか? 何かのようなもの:
例として 24 個の接続/Firefox を選択しました。
java - 多くの持続的接続を備えたサーバーを設計する方法
多くのクライアントが中央サーバーに接続するアプリケーションを設計しています。このサーバーはこれらの接続を維持し、30分ごとにキープアライブを送信します。サーバーにはHTTPサーバーが組み込まれており、クライアント接続へのインターフェイスを提供します(例:http:// server / isClientConnected?id = id)。私はこれを行うための最良の方法は何であるか疑問に思いました。私の現在の実装はJavaであり、キーとしてIDを持つマップがありますが、接続ごとにスレッドが開始され、これが本当にこれを行うための最良の方法であるかどうかはわかりません。任意のポインタをいただければ幸いです。
ありがとう、
Isaac Waller
java - Flash クライアントと Java サーバー間の永続的な接続
私はフラッシュが初めてです。Java で記述されたサーバーと通信する必要がある Flash (ブラウザーで実行) でゲーム クライアントを作成することを計画しています。クライアントとサーバー間の接続は永続的である必要があります。
私は XMLSocket を知っています - それが唯一の方法ですか? 推奨事項はありますか?
ありがとう!
vb.net - vb.netネットワークドライブが永続的にマップされているかどうかを確認する方法
次のコードを使用して、システム上のネットワークドライブをレイアウトします。永続性のために3番目の列を追加したいのですが、vb.netで、ドライブに永続的なマップがあるかどうかを確認する方法がわかりません。助言がありますか?
asynchronous - Tornado Web と永続的な接続
永続的な接続をサポートするTornadoWebでHTTPサーバーを作成するにはどうすればよいですか。
つまり、接続を閉じることなく、多くのリクエストを受け取り、それらに応答できるようになります。非同期で実際にどのように機能しますか?
永続的な接続を処理するためのハンドラーの書き方を知りたいだけです。実際にはどのように機能しますか?
私はそのようなハンドラを持っています:
execute は終了時にコールバックを呼び出します。
その方法で投稿が何度も呼び出され、クライアントからの httprequest ごとに 1 つの接続カウントが増加するという私の仮定は正しいですか? しかし、接続ごとに個別のカウント値がありますか?
python - Tornado Web Framework Mysql 接続処理
私は最近、多くの異なるクライアントによる多くの一貫した接続を提供するために、Tornado Web フレームワークを調査しています。
基本的に RSA 暗号化文字列を取得して復号化するリクエスト ハンドラーがあります。復号化されたテキストは、私が作成した SAX ドキュメント ハンドラーによって解析される XML 文字列です。すべてが完全に正常に動作し、実行時間 (HTTP 要求ごと) は約 100 ミリ秒 (復号化と解析を含む) でした。
XML には、ユーザーのユーザー名とパスワードのハッシュが含まれています。ユーザー名がアプリケーションによって提供されたパスワード ハッシュと一致することを確認するために、MySQL サーバーに接続したいと考えています。
基本的に次のコードを追加すると:
HTTP リクエストの実行にかかる時間は、最大で 4 ~ 5 秒です。これは、MySql データベース サーバー自体への接続にかかる時間に起因すると考えられます。
私の質問は、どうすればこれをスピードアップできますか? グローバル スコープで MySQL 接続を宣言し、新しいカーソルを作成してリクエスト ハンドラでアクセスできますか? それとも、Tornado の非同期設計のために同時実行の問題が発生しますか?
基本的に、HTTP リクエストごとに MySQL サーバーへの新しい接続を発生させる必要がないようにするにはどうすればよいので、実装に数秒かかるのではなく、ほんの数秒しかかかりません。
また、SQL サーバーは実際には Tornado Web サーバー インスタンスと同じ物理マシン上にあることに注意してください。
アップデート
以下の同じコードで、プロファイラーを介して単純な MySQL クエリを実行しました。
「connections.py」init関数の呼び出しは、単独で実行するのに 4.944 秒かかりました。それは正しくないようですね。
更新 2
1 つの接続 (または非常に単純な DB 接続プールを使用したいくつかの接続) で実行すると、トルネード Web サーバー インスタンスごとに期待するスループットを処理するのに十分な速度になると思います。
1,000 のクライアントがクエリにアクセスする必要がある場合、通常のクエリ時間は数千秒ですが、最も不運なクライアントは、データを取得するために 1 秒待つだけで済みます。
java - HttpClient 接続を効率的に再利用するにはどうすればよいですか?
API エンドポイントに対して非常に頻繁に (>= 1/秒) HTTP POST を実行しており、効率的に実行していることを確認したいと考えています。私の目標は、特に失敗した POST を再試行する別のコードがあるため、できるだけ早く成功または失敗することです。HttpClient のパフォーマンスに関するヒントのすばらしいページがありますが、それらすべてを徹底的に実装することで実際にメリットが得られるかどうかはわかりません。ここに私のコードがあります:
古い接続のチェックを無効にすることは理にかなっていますか? MultiThreadedConnectionManagerの使用を検討する必要がありますか? もちろん、実際のベンチマークは役に立ちますが、最初に自分のコードが正しい軌道に乗っているかどうかを確認したかったのです。
php - MySQL 永続接続
10 個のアプリケーション サーバーと 1 個の mysql データベースがあります。mysql の接続プーリングを行いたいのですが、単純に mysql_pconnect() を有効にするだけでは機能しません。これは、一部のサーバーが他のサーバーよりも多くの接続を持つようになるためです。
このシナリオに最適なソリューションは何ですか..?
php - PHPMailer での永続的な SMTP 接続
PHPMailer で永続的な SMTP 接続を有効にする方法は?
私は多くの電子メールを送信するので、永続的な接続により、パフォーマンスが向上する可能性があります。
jquery - comet コードの設定についてヘルプが必要
クライアントとブラウザ間の永続的な接続を維持するために、Node.jsをNginx http pushモジュールに接続する方法を知っている人はいますか?
私はコメットが初めてなので、出版などを理解していないだけで、誰かがこれを手伝ってくれるかもしれません。
これまでに設定したものは次のとおりです。jQuery.comet プラグインをダウンロードし、次の基本的なコードをセットアップしました。
クライアント JavaScript
このことから私が理解できることは、クライアントは URL に続いて /broadcast/sub=getIt をリッスンし続けるということです。メッセージがあると、updateFeed が起動されます。
かなり基本的でわかりやすいIMO。
Nginx http プッシュ モジュール構成
default_type アプリケーション/オクテット ストリーム; sendfile オン; キープアライブ_タイムアウト 65; push_authorized_channels_only オフ;
これで、/broadcast/sub への呼び出しをポート 80 でリッスンするよう nginx に指示し、/broadcast/pub に送信された応答を返します。
かなり基本的です。この部分は理解するのがそれほど難しくなく、インターネット上で十分に文書化されています。ほとんどの場合、ブロードキャストを行うこの背後に ruby または php ファイルがあります。
私の考えは、 node.js をブロードキャストすること
/broadcast/pub
です。persistent streaming data
これにより、接続を切断することなくサーバーからクライアントにアクセスできるようになると思います。リクエストをループしてロングポーリングアプローチを試しましたが、これはより効率的だと思います。
それとも、これは機能しませんか。
Node.js ファイル
Node.js を作成するのに迷っています。まず最初に、node.js をこのように動作させる方法がわかりません。
ロングポーリングに使用したセットアップは次のとおりです。
これはポート 8000 をリッスンし、応答変数に書き込むだけです。
長いポーリングの場合、nginx.config
次のようになりました。
これにより、ポート 80 が 8000 にリダイレクトされ、問題なく動作しました。
コメットが理解できるように Node.js を動作させる方法について、誰か考えを持っている人はいますか? 本当にいいだろうし、あなたは私を大いに助けてくれるでしょう.
資源
使用済み
- これを Node.js の代わりに ruby で行う例
- jQuery.comet
- Nginx HTTP プッシュ モジュールのホームページ
- Faye: Node.js および Rack 用の Comet クライアントおよびサーバー
faye を使用するにはコメット クライアントをインストールする必要がありますが、Nginx で提供されているものを使用したいと考えています。それが私がフェイだけを使わない理由です。nginx が使用するものは、はるかに最適化されています。
追加