問題タブ [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 投票する
2 に答える
307 参照

php - ロング ポーリング - 新しいデータをいつ取得したかを判断する方法は何ですか?

誰かがメッセージを送信するたびに、globalfile がロックされて書き込まれるチャット プログラムがあるとします。受信クライアントには保留中の xmlhttp リクエストがあり、次の構造を使用して新しく更新されたファイルが返されるのを待っています。

ファイル サイズをクライアントに送信し、次のポーリング リクエストでサーバーに戻すことは、これを行う良い方法でしょうか。新しいデータがあることを知っています。または、ファイルのオフセットを前後に送信する方が、ファイル内のどこで新しいデータをチェックするかがわかるので、より良いアプローチでしょうか? または、グローバルな「チャット」ファイルを使用する以外の、まったく別の方法ですか?

「利用可能な新しいデータ」を決定する一般的な方法は何ですか

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

javascript - Comet ロングポーリングを使用してサーバーにメッセージを送信する

クライアントからサーバーにデータを送信する最良の方法は何ですか?

私が使用しているサンプル コードは、How do I implement basic "Long Polling"?からのものです。

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

asp.net - Asp.Net チャット サーバー側のポーリング

こんにちは、

Comet を使用してチャット アプリケーションを実装しました。新しいメッセージが到着するまで、リクエストはサーバー上で「ハング」します。その後、新しいメッセージとともにクライアントに戻り、再びサーバーに移動します。

私の問題は次のとおりです。

新しいメッセージを確認するために、600 ミリ秒ごとにデータベースをポーリングします。簡単なクエリ「select...from messages where messageId > ' + lastMessageId.

さらに、プレゼンスを維持するために、各ユーザー「LastKeepAliveTime」でデータベースを非常に(非常に)頻繁に更新します。

SQL Server のトランザクション ログが大きくなり、ある時点でチャット アプリケーションが動作しなくなりました。

チャット ユーザーは登録ユーザーではなく、いつでもページを離れることができるランダム ユーザーです。

ありがとうヤロン

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

.net - SqlCacheDependencyを使用してリアルタイムの更新を取得しますか?-ASP.NET

Webページにリアルタイムの更新を表示したい(外部プロセスによって変更されたデータベーステーブルのステータスフィールドに基づく)。私の調査に基づくと、これを行うにはいくつかの方法があります。

  • ロングポーリング(Comet)-これは実装が複雑なようです
  • 通常のポーリング-AJAXメソッドで5秒ごとにデータベースヒットをトリガーして、現在のステータスを取得できます。しかし、これにはパフォーマンスの問題があるのではないかと心配しています。

次に、使用について読みましSqlCacheDependencyた。基本的に、テーブルのフィールドに基づいてキャッシュが無効になります。キャッシュが無効になっているときにトリガーされたイベントを使用して、ユーザーに新しい更新を表示できると思いますか?

パフォーマンスの問題が発生しない簡単なソリューションは何ですか?

0 投票する
4 に答える
4116 参照

javascript - 長時間ポーリングのAjaxパフォーマンスの向上

私は、サーバーからクライアントに多かれ少なかれ一定の更新を送信するために(jQueryのajax機能を介して)長いポーリングを使用するWebアプリ( Firefox互換のみ)を書いています。これを長時間、たとえば1日中または一晩実行したままにしておくことの影響が心配です。基本的なコードスケルトンは次のとおりです。

(0.5秒間の「スリープ」とは、更新がクライアントにすぐに返される場合に、クライアントがサーバーを攻撃しないようにするためです。通常はそうです。)

これを一晩実行したままにすると、Firefoxがクロールする傾向があります。基本的に無限再帰関数を作成したので、これはスタックの深さが大きいことが原因の一部である可能性があると考えていました。ただし、Firebugを使用してブレークポイントをにスローするとfetch、そうではないように見えます。Firebugが表示するスタックは、1時間後でも、約4または5フレームの深さしかありません。

私が検討している解決策の1つは、再帰関数を反復関数に変更することですが、スピンせずにAjaxリクエストの間に遅延を挿入する方法がわかりません。JS 1.7の「yield」キーワードを見てきましたが、ここで必要なものかどうかを判断するために、頭を完全に包むことはできません。

ページを定期的に、たとえば1時間に1回ハードリフレッシュするのが最善の解決策ですか?8時間または12時間実行した後でも、ブラウザに害を及ぼさない、より優れた/よりスリムなロングポーリングデザインパターンはありますか?または、サーバーが応答する頻度を通常知っているので、長いポーリングを完全にスキップして、別の「一定の更新」パターンを使用する必要がありますか?

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

javascript - ajaxロングポーリングにiframeを使用する利点は何ですか?

コメットのロングポーリングにiframeを使用する利点は何ですか?メインページにプルされたスクリプトファイルに非同期ajaxリクエストを保持しないのはなぜですか?ありがとう。

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

ajax - AJAX リアルタイムおよび共同作業

たとえば、google wave のようなリアルタイムの共同アプリケーションを作成しようとしています。user1 が同時に何かを書き込むと、user2 の画面に表示されます。

私は少し調査を開始し、Ajaxでこれを行ういくつかの方法を見つけました-

1.X秒ごとにサーバーにリクエストを送信し、何が「起こっている」かを確認します

2.タイムアウト - 長いリクエスト、問題 - IE8 でのみこれを実行できることがわかりました

他のオプションがありますか?これに最適な方法は何ですか?
そして、方法番号2では、これは本当にIE8でしかできないのですか?

ヨシ

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

java - netty nio フレームワーク Java ロングポーリング

nettyフレームワークを使用してロングポーリングを行うにはどうすればよいですか? たとえば、私がフェッチするとしますhttp://localhost/waitforx

waitforxイベントを待たなければならないので非同期ですか?たとえば、ブロッキング キューから何かをフェッチするとします (データがキューにある場合にのみフェッチできます)。キューからアイテムを取得するときに、データをクライアントに送り返したいと思います。うまくいけば、誰かがこれを行う方法のヒントを教えてくれます。

どうもありがとう

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

php - 自動更新ページのコード概要

リアルタイムの情報をいじりたいのですが、複製したいかなり標準的な機能があります。

これは、単一の質問ビューで回答を入力しているときにSOで発生し、「ニュースの回答は3つあります。クリックして表示してください」というアラートが上部にポップアップ表示されます。

Twitterでも発生します「この検索には5つの新しいツイートがあります:クリックして更新してください」

私はサーバー側とクライアント側のコードにかなり精通しており、私が探しているのは、このようなことがどのように発生するかについての基本的な概要(疑似コードではなく、おそらく平易な英語)です。

毎分実行されているサーバー上に、ページ上の長いポーリングされたAJAXビットに信号を送信するCRONジョブがありますか?

ページ自体はサーバーをポーリングしますか?

ありとあらゆる解決策を歓迎します。ありがとう!

0 投票する
4 に答える
6386 参照

python - Tornado と Prototype を使用した非同期 COMET クエリ

Tornado と JS Prototype ライブラリを使用して単純な Web アプリケーションを作成しようとしています。したがって、クライアントはサーバー上で長時間実行されるジョブを実行できます。このジョブが非同期で実行されることを望みます。これにより、他のクライアントがページを表示してそこで何かを実行できるようになります。

これが私が持っているものです:

サーバー部分です。メインビューがあります(小さな挨拶、現在のサーバー時間、および実行時間の長いジョブを実行する ajax クエリの URL が表示されます。ボタンを押すと、実行時間の長いジョブが実行されます。サーバーがハングします :(このジョブは実行中です。テンプレート ページは次のとおりです。

私は何を間違っていますか?Tornado と Prototype (または jQuery) を使用してロング プーリングを実装する方法

PS: チャットの例を見てきましたが、複雑すぎます。それがどのように機能するのか理解できません:(

PSS の完全な例をダウンロード