問題タブ [long-polling]

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.

0 投票する
3 に答える
27683 参照

rest - REST リソースの変更を監視する RESTful な方法は何ですか?

他のクライアントからの変更や修正を監視したい REST リソースがある場合、最善の (そして最も RESTful な) 方法は何ですか?

そうするために私が持っていた1つのアイデアは、リソースが(まだ)存在しない場合にすぐに戻るのではなく、接続を開いたままにする特定のリソースを提供することです。たとえば、次のリソースがあるとします。

このリソースの「GET」は、対戦相手が動く番だと教えてくれるかもしれません。このリソースを継続的にポーリングして自分の番がいつ移動するかを確認するのではなく、移動番号 (たとえば 5) をメモして、次の移動を取得しようとする場合があります。

「通常の」REST モデルでは、この URL に対する GET リクエストは 404 (見つかりません) エラーを返すようです。ただし、代わりに、対戦相手が彼の動きをプレイするまでサーバーが接続を開いたままにした場合、つまり:

サーバーは、対戦相手がそのリソースに PUT したコンテンツを返すことができます。これにより、必要なデータが得られるだけでなく、対戦相手がポーリングを必要とせずに移動したときの一種の通知も得られます。

この種のスキームは RESTful ですか? それとも、ある種の REST 原則に違反していますか?

0 投票する
6 に答える
6781 参照

gwt - 約 1 更新/秒の長いポーリングとストリーミング

ストリーミングは実行可能なオプションですか? どちらを選択するかによって、サーバー側でパフォーマンスに違いはありますか? この場合、一方が他方よりも優れていますか?

サーバー側で実行されているTomcatを使用してGWTアプリケーションに取り組んでいます。私のニーズを理解するために、複数の株式の株価を同時に更新することを想像してみてください。

0 投票する
3 に答える
1660 参照

wcf - WCF ポーリング二重サービスは他のクライアントで使用できますか?

Silverlight クライアントを使用してサーバー アプリを作成しています。ある時点で、Silverlight 以外のクライアントが私のサービスを使用できるようにしたいと考えています。現在、ポーリングされる WCF サービスをいくつか作成しましたが、応答性に満足していません。コードを Silverlight/WCF 二重ポーリングを使用するように切り替えることを考えていますが、そうすると、唯一のクライアントとして Silverlight を使用することになりますか? 通常の WCF http サービスを使用して独自のロング ポーリング サービスを作成する方がよいでしょうか?

0 投票する
3 に答える
3381 参照

comet - マルチプレイヤーJavaScriptゲーム用のバックエンドサーバーを実装する最も簡単な方法は?(COMET / longpolling)

私はJavaScriptでゲームを書いてきましたが、それをマルチプレイヤーにする時が来ました。AJAXロングポーリングを使用して、現在のゲーム状態を取得し、ロビーを実装したいと思います。

サーバーは、mysqlデータベースへのゲーム状態の保存、ゲーム状態の取得、スコアボードのフォーマットなどの基本的な機能を実行する必要があります。

PHPで書くのが最も簡単だと思いますが、それが生み出すapacheプロセスの数のために、それは悪い考えです。

おすすめは何ですか?私は最も簡単なアプローチを探しています。

編集:StreamHubは良さそうですが、コミュニティエディションでは10人の同時ユーザーしか許可されていません。

0 投票する
3 に答える
1105 参照

http - HTTP で同時接続を維持していますか?

Web サーバーへの複数のアクティブなロング プーリング AJAX 接続を維持する必要があります。

ほとんどのブラウザーでは、同じサーバーへの同時接続が 2 つを超えることは許可されていません。これは、HTTP 1.1 プロトコルの状態です。

永続的な接続を使用するクライアントは、特定のサーバーに対して維持する同時接続の数を制限する必要があります。シングルユーザー クライアントは、サーバーまたはプロキシとの接続を 2 つ以上維持するべきではありません。プロキシは、別のサーバーまたはプロキシに対して最大 2*N の接続を使用する必要があります。ここで、N は同時にアクティブなユーザーの数です。これらのガイドラインは、HTTP 応答時間を改善し、輻輳を回避することを目的としています。

同じ IP アドレスを共有する2 つのサブドメイン Server1.MyWebSite.Com と Server2.MyWebSite.Comがある場合、2x2 の同時接続を確立できますか?

0 投票する
2 に答える
1383 参照

javascript - コメット、responseText、メモリ使用量

XHR オブジェクトを破棄せずに XHR オブジェクトの responseText をクリアする方法はありますか?

ライブデータをブラウザーにフィードするために、Web サーバーへの永続的な接続を開いたままにしておく必要があります。問題は、比較的大量のデータ (常に 1 秒あたり数百 K) が通過するため、この接続が少なくとも数分間開いたままにしておく必要があるため、メモリ使用量が大きな問題になることです。私が送り返す JSON は可能な限り小さく砕かれていますが、responseText は非常に急速に大きくなります。

サーバー側アプリの動作方法が原因で、AJAX スタイルのショート ポーリングを使用し、処理が完了したときに XHR オブジェクトを破棄すると、解析にかかる数ミリ秒であっても、大量の重要なデータが失われます。応答し、新しい XHR を作成して送信します。Web サーバーは一度に 1 つの接続しか受け付けないため、重複するリクエストを使用するオプションはありません。(聞かないでください。) したがって、Comet はまさに私が必要としているモデルです。

私がやりたいことは、サーバーから返された各 JSON チャンクを解析し、responseText をクリアして、同じ接続を使い続けることができるようにすることです。ただし、responseText は読み取り専用です。私が見つけた方法で直接空にすることはできません。

ここに欠けている写真の一部はありますか?読み終わったときに responseText を解放するために使用できるトリックを知っている人はいますか? または、サーバーの応答を送信できる別の場所はありますか?

これは実際にはほとんどコードにとらわれない質問であるため、コードは含めません。XHR を生成し、返されたデータを処理する Javascript ルーチンは非常に単純です。

0 投票する
1 に答える
1910 参照

erlang - Erlang(コメットチャット)のメッセージキューモデル?

Erlang でコメット チャットを行っています。メッセージ転送には 1 つの接続 (ロングポーリング) のみを使用します。しかし、ご存知のように、ロングポーリング接続は常に接続されたままにすることはできません。新しいメッセージが到着するか、タイムアウトに達するたびに、メッセージは中断され、サーバーに再度接続されます。接続が再接続される前にメッセージが送信された場合、チャットの整合性を維持するのに問題があります。

また、ユーザーが Comet-chat で複数のウィンドウを開いた場合、すべてのチャット メッセージは同期を維持する必要があります。つまり、ユーザーは多数のロング ポーリング接続を持つことができます。そのため、すべてのメッセージを時間どおりに配信し続けることは困難です。

接続ごとにメッセージ キューを作成する必要がありますか? または、これを解決するための他のより良い方法は何ですか?

0 投票する
2 に答える
2959 参照

http - ブラウザに応答する前に、タイムアウトを取得せずに安全に待機できる時間はどれくらいですか?

サーバーからクライアントへの「プッシュ」をエミュレートするためにロングポーリングで動作するチャットアプリケーションを作成しています。

基本的には、ブラウザが更新を求めてきて、何か新しいことがあれば返信します。それ以外の場合は、返信するものがあるまで、応答せずに接続を開いたままにします。

ここで、30 秒経過しても何も送信していない場合は、基本的に "NoNews" という応答を送信します。クライアントは再度ポーリングします。

私がやりたいことは、ブラウザが単にタイムアウトして私をあきらめる前に、できるだけ長く返信せずにこの接続を維持することです...各ブラウザのクライアントタイムアウトに関する適切なドキュメントが見つかりませんでした.そして、それはすべて同じではないようです...

ロングポーリングアプリケーションを作成した人はいますか?
最長の安全なタイムアウトは何ですか?

ありがとう!

0 投票する
1 に答える
390 参照

python - ajax プッシュ、ロング ポーリングを行うための子サーバーの Python フォークを支援する

わかりました、私は基本的なpythonしか知りませんが、これについて助けが得られるなら、オープンソースにすることを検討しています.

私がやろうとしていること: - (完了) 初期化コンテンツの Ajax 送信 - 最新のコンテンツを送信するための Python サーバー recv コマンド "init" - (完了) Ajax recv コンテンツを実行し、すぐに Python サーバーにコールバックする - Python サーバー recv コマンド "子をセットアップし、ajax からのコマンド「new」を待機します - (完了) Ajax は「new」コマンドを送信します - Python サーバーは待機中のすべての子を起動し、最新のコンテンツを送信します - (完了) Ajax は「待機」を送信します。前方へ

私は既に PHP で Python サーバーの部分を作成しましたが、100% CPU を使用するため、複数のプロセスを待機させるにはフォーク ソケット デーモンを使用する必要があることがわかりました。今、私はこれをPHPで書くことができましたが、必要な拡張機能は手動でインストールする必要があり、共有アカウントなどにインストールするようにホストに依頼すると問題になる可能性があります. そこで、より柔軟で高速に実行できる Python に目を向けました。さらに、より多くの人がそれを使用できます。

ですから、誰かがこれを手伝ったり、何らかの方向性を示したりできれば、それは素晴らしいことです.

私は自分でコードに取り組んでいますが、それが十分にわかっていません。さまざまなコマンドに if ステートメントを追加し、自分で mysql 接続を追加できます。何か困ったことがありましたら、こちらで質問させていただきます。このサイトが大好きです。