問題タブ [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.
jquery - Jquery AjaxはInternet Explorerをクラッシュさせますか?
これがこのサイトでの最初の投稿であることを認めなければならないので、何か間違ったこと (書式設定など) を行った場合は、アドバイスとしてお詫びします。
とにかく、私は javascript (および jQuery) を使用して一種の mmo を作成しています。これまでのところ、Chrome、Safari、Firefox などですべて正常に動作しています。ただし、途中で Internet Explorer がクラッシュすることがわかりました。
クラッシュを再現することで、次のコードに絞り込みました。
これは、長期間にわたって更新をポーリングすることになっています。ただし、IE では、1 回の応答の後、このコードが無限ループに陥り、ブラウザがクラッシュします。サーバーの応答がない場合にのみ、応答のたびにクラッシュするようには見えません。
「complete:...」という行は次のように試行されていることに注意してください。
同じ問題が発生しています。
javascript - JavaScript でポーリング コンシューマー パターンを実装する最善の方法
バックグラウンド
5 月に、メモリ保持の問題に関する WebKit の問題を報告しました。問題は Web Inspector 自体に起因する可能性があるように見えますが、まだ確信が持てません。
問題
私の JavaScript アプリケーションが、利用可能になったデータを取得するための「 Polling Consumer 」パターンを実装するという問題が表面化しました。問題は、記憶が保持され、1 日を通して増加することです。JavaScript ロジックは次のようになります。
- データを取得して折り返し電話する
- コールバックされたら、データを処理してからステップ 1 を実行します
これは JavaScript でポーリング コンシューマを実装する合理的な方法ですか? ちなみに、私はjQueryのajax関数を使用していますが、もちろんそれ自体に問題がある可能性があります。さらに、成功ハンドラーとしてjQueryプロキシを使用しているため、スコープによる保持は問題にならないと考えていました。また、プロキシを使用せずに問題を観察しました。いくつかのコード:
php - MySQL トリガー + ロングポーリング Apache/PHP 接続を通知
これを行う Comet サーバー テクノロジがあることは知っていますが、簡単で自家製のものを書きたいと思います。
レコードが MySQL テーブルに挿入されると、このデータを、PHP (またはその他のもの) を使用して一連のロング ポーリング Apache 接続に何らかの方法で伝達したいと考えています。そのため、複数の人がブラウザを介して「リッスン」しており、MySQL INSERT が 2 番目に発生すると、ブラウザに送信されて実行されます。
簡単な方法は、PHP スクリプトで MySQL データベースをポーリングすることですが、これは実際にはサーバーからのプッシュではなく、不要なデータベース クエリの許容できない順序が発生します。基本的に、リスナーがまったくクエリを実行せずに、MySQL からロングポーリング接続にそのデータを取得したいと考えています。
これを実装する方法についてのアイデアはありますか?
ip-address - COMET サーバーの実装で一定の IP アドレスを想定しても安全ですか?
当社の Web サイトは、社内で実装されたロング ポーリング COMET サーバーを使用して、クライアント マシン上の Web ページと通信します。オブジェクトは、 1Connection
つのクライアントの要求と応答を管理します。オブジェクトはConnection
何時間も存続し、サーバーに「接続」されたまま、同じクライアントからの数百の要求を処理できます。
私の質問は次のとおりです。単一のセッションで単一のクライアントからの要求の発信元アドレスが一定のままであると想定しても安全ですか? クライアントが新しい ipAddress から発信された場合、最初から開始する必要があるように、これを強制するルールを作成したいと思います。単一のブラウザーからの要求が、私の計画を馬鹿にするような速度で異なる ipAddresses から発信される可能性がある一般的なケースがあるかどうか疑問に思っています。
javascript - jsonp コメット ハング リクエストにより、ブラウザで見苦しい「読み込み中」ステータスが発生する
私は jsonp を使用してクロスドメインのコメット リクエストを行っていますが、「読み込み中」のステータスは非常に煩わしいものです。
これをjavascriptで抑制する方法はありますか?
jsonp に慣れていない人のために説明すると、基本的にスクリプト タグが挿入されますが、私の場合を除いて、後でリクエストを返すことなくサーバーにリクエストをハングアップさせています。
この間、ブラウザは私のリクエストを「読み込み中」状態と見なします。
私はこれを使用しています: http://code.google.com/p/jquery-jsonp/
前もって感謝します!
java - @WebService として公開された SOAP ベースの @Stateless EJB を使用したロング ポーリングの実装
既存の SOAP ベースの Web サービスを使用して、ロング ポーリング ベースの通知システムを提供したいと考えています。どうすればこれを実装できますか? クライアントは現在、接続されている他のクライアントから更新を受信する必要がある Java デスクトップ リッチ クライアントです。サーバーは GlassFish 3.01 です。基本的なブロック @WebMethod がありましたが、その使用に起因する問題がありました。Web メソッドのアイデアを示す擬似コードを次に示します。
クライアント側では、Future オブジェクトを使用して、これを非同期で呼び出しています。
クライアント側は正常に動作しているようです。ただし、Web サービス呼び出しの持続性が原因と思われる 2 つの問題が発生しました。
- 各リクエスターはアクティブな http リスナーを使用するため、これはスケーラブルではありません。
- クライアントが切断されると、GlassFish は例外をスローします (すべての呼び出しがセキュアな SSL リスナー (デフォルトでは http-listener-2) を通過する必要があるため、SSL 例外)。
com.sun.grizzly.comet.CometEngine を使用する必要がありますか? EJB 3.1 @Asynchronous アノテーションはここで何かをしますか? 私が見つけたすべての例は、適用できないサーブレット API、AJAX、およびその他のテクノロジに依存しています。ありがとうございました。
.net - IIS での Ajax ロングポーリング
重複の可能性:
ASP.NET のコメット実装?
リアルタイム チャット Web サイトの作成を検討していますが、開始する前にいくつか質問がありました。
まず、1 つの会話に複数の人が参加し、複数の会話が同時に進行できるようにしたいと考えています。
いくつかの調査を行った後、多くの人がロングポーリングを提案しました。スケーラビリティは問題のように聞こえますが、各ユーザーはサーバーで待機している接続を持ち、各接続は独自のスレッドを使用しているようです。複数のユーザーがいる場合、これによりパフォーマンスの問題が発生する可能性があります。私がこれについて読んだとき、ほとんどの場合、彼らは Apache をサーバーと呼んでいました。IIS (6 または 7) でも同じ問題が発生しますか? 問題が発生する前に、IIS が処理できるユーザー数はおよそ何人ですか?
IIS で ajax を使用したロング ポーリングは、リアルタイム チャット Web サイトを作成するための適切なオプションですか、それとも接続をより適切に処理できる別のサーバーがありますか? 他に調べるべきことはありますか?
php - AJAXポーリング頻度-ロングポーリングするか、ロングポーリングしないか?
比較的一定のデータベースポーリングを必要とするWebページのコンポーネントを構築しています。これには2つの異なるアプローチがありますが、そのうちの1つが他のアプローチよりも優れているのか、それとも3つ目のオプションがないのか疑問に思っています。
1)1秒または2秒ごとにAJAXリクエストを送信して、更新を確認します。新しいデータがあるかどうかに関係なく、各リクエストはすぐに返されます。
2)データを受信するかタイムアウトが発生するまで返されない単一のAJAXリクエストを起動します。これらのいずれかが発生すると、次のリクエストが発生します。(これはロングポーリングと呼ばれていると思いますか?)
データベースクエリの数はどちらでも同じですが、#2を使用すると、ブラウザから発生するリクエストが少なくなり、帯域幅とクライアントリソースを節約できます。サーバーの場合、アクティブなままでクエリ間でスリープする単一のPHPリクエストを使用するか、数秒ごとに起動してDBをポーリングしてから、シャットダウンする方がよいでしょうか。それとも違いはなく、私はこれについて強調しすぎていますか?
編集:これはより大きなウェブアプリのチャットウィジェットであることも述べる必要があると思います。チャットは二次的な機能であるため、通信がわずかに遅れてもユーザーを殺すことはありません。
javascript - Webkitの一定のURL読み込みURL/運命のスロバーを防ぐ方法
これについてはいくつか質問がありますが、ほとんどの場合、詳細が不足しており、明確な答えはありません。
だから私はxhrロングポーリングを使用しています、私のポーリングはかなり基本的で、次のように見えます
直前にインポートされたスクリプトから開始し、ページ上の他のすべてを完全に削除して、javascriptに(同期的に)ロードされる唯一のものを削除してから、呼び出しをラップします
ただし、webkitでは常にURLバーが読み込まれるため、0を任意の数値に変更して修正できますが、この問題が二度と発生しないようにするための一貫した方法が本当に必要です。
誰かアイデアはありますか?ロードを待つために他のさまざまな手法を試しました。Webインスペクターをチェックインすると、上記のjsの実行を含むファイルが、ポーリングが開始する前にロードする最後のものであり、そのファイルの最後の行が})();であることが示されます。それはすべてを実行します。
java - 最も成熟していて堅牢なJavaコメットスタイルのフレームワークは?
Tomcat6/Comet/NIO には重大な問題があるようです (例)。大多数の人は非同期 http を別のものを使用していますか? 桟橋/継続?Glassfish のサーブレット 3.0 の実装はどうですか? その他?