問題タブ [comet]

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 に答える
568 参照

comet - コメットとクライアントのプッシュ方法についてはどこで学ぶことができますか?

サーバー側とクライアント側からmeeboのような基本的な「comet」またはクライアントプッシュメソッドを実装する方法を学びたいのですが、どこで適切で明確な仕様を見つけることができますか?ありがとう

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

api - サーバー プッシュ テクノロジ (COMET) の API モデル

サーバー側イベントのサポートを CppCMS に追加する予定です。通信レベルで何をすべきかの技術的な部分を理解しています。クライアントは長いポーリング XmlHTTPRequest を送信し、応答を待ちます。サーバーは接続を受け入れ、サーバー側のイベントが発生してクライアントに応答を送信するまで応答しません。クライアントは手順を繰り返します。

ただし、これはほとんどの Web 開発者にとって「低すぎる」レベルです。イベントの管理方法、接続の管理方法など、多くの質問があります。

私は2つの可能なモデルについて考えました:

  1. 定義されたいくつかの名前付きイベントとサーバー側があります。たとえば、「チャット ルーム 134 番の新しいメッセージ」です。リクエストが受け入れられると、サーバー側アプリケーションはルーム (DB など) 内のメッセージをチェックし、クライアントへの新しいメッセージがない場合は、イベントにサブスクライブして待機します。

    他のクライアントがサーバーにデータを投稿すると、「チャット ルーム 134 番の新しいメッセージ」イベントですべてのアプリケーションに通知し、それらが起動してこれらのメッセージをクライアントに送信します。

    このモデルは依然として「低レベル」モデルのように見えますが、すべての通知メソッドが隠されています。

  2. もう 1 つのオプションは、いくつかの名前付きキューを定義することです。これにより、各クライアントはサーバーへの接続時にそのようなキューを作成し、新しいメッセージを待ちます。あるクライアントが「Chat Room no 134」に新しいメッセージを投稿すると、サーバー側では、この「Chat Room no 134」に接続されているすべてのキューにメッセージがブロードキャストされ、メッセージがクライアントに配信されます。

    しかし、次のような多くの疑問が生じます。

    • 単一ページのレベルでキューとセッション レベルを管理するにはどうすればよいですか?
    • キューを削除してタイムアウトを作成するにはどうすればよいですか?
    • 複数の「ウィンドウ」が同じキューにサブスクライブするとどうなりますか?
  3. サーバー側のイベントとユーザー側のイベントを結び付ける永続オブジェクトをサーバー側に作成します。リダイレクトされた個別の XHR リクエストを介して通信する場合があります。

    そのため、クライアント (JavaScript) はイベントを登録し、ページが再構築されるまで、XHR およびサーバー側でディスパッチされたイベント通知でイベントを待機します。

では、サーバー側のプッシュ テクノロジの背後にある最も一般的で推奨される API モデルは何ですか?

ありがとう

編集:3番目のオプションを追加

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

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

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

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

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

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

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

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

javascript - 複数のウィンドウをサポートする Comet JavaScript ライブラリ

複数のウィンドウ/タブで同じ接続を再利用できる無料のComet JavaScript ライブラリはありますか? つまり、2 つ目のウィンドウを開くと、同じドメインで別のウィンドウが開いていることが検出されます。新しい接続を開くのではなく、他のウィンドウの接続をリッスンし始めます。そうすれば、ブラウザのドメインごとの接続制限内にとどまることができます。

Lightstreamerはこれをうまく処理しているようですが、私はオープンソースのものを好みます。

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

javascript - gwt+comet は tomcat を設定する必要がありますか?

  1. このチュートリアルhttp://www.jroller.com/masini/entry/a_comet_implementation_for_googleを参照しています 。comet を使用するときに tomcat を構成する必要がありますか?
  2. gwt+comet はホスト モードまたは必須 -noserver で実行できますか?
0 投票する
1 に答える
135 参照

php - サーバーファイルへの最大アクセス頻度

Cometのロングポーリングメソッドを使用して、PHPでAJAXプッシュ実装を作成しようとしています。私のコードでは、を使用file_get_contents()してファイルを繰り返し読み取り、ユーザーに送信するメッセージを確認します。サーバーの負荷を減らすために、2つのテキストファイルを使用しています。1つは実際のコマンドを含み、もう1つは「変更通知」として機能します。これは0〜9で繰り返されるか、UNIXタイムスタンプを含みます。私の質問は、サーバーに過負荷をかけることなく、どのくらいの頻度で小さな(数バイトのみ)ファイルにアクセスして読み取ることができるかということです。プッシュ実装は、数秒ごとにファイルを要求するよりもはるかに頻繁に変更をポーリングできることを意味しますが、それでも制限が必要です。

それが役に立ったら、私は共有ホスティングである1&1ホーム(Linux)ホスティングプランを使用しています。

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

javascript - 道場の性能(ロギング、コメット、スライダー)

JavaScriptにパフォーマンスの問題がいくつかあり、それをインストルメント化することにあまり成功していません。私が試したことの1つは、firebugのプロファイルツールを使用することです。一番上の単一の呼び出しはdojoのlog()であったと報告しています。役に立たないことに、圧縮されたスクリプトから行番号が報告されるため、問題の原因がわかりません。しかし、プロファイルレポートの行の70%がdojoのlog()呼び出し用であるのは興味深いように思われるので、累積的に、そこで驚くべき時間を費やしているに違いありません。dojoロギングをオフにする方法はありますか?

目に見える唯一のロギングは、1.5秒ごとに表示され、彗星のために生き続けているように見えるエントリです。私もdojoのスライダーを1か所で使用していますが、それがパフォーマンスの低下を引き起こしているという証拠は見当たりません。

JavaScriptでパフォーマンスのホットスポットを特定するには、他にどのようなツールを使用する必要がありますか?JavaScriptに含まれるコードの部分はそれほど大きくないので、実際に問題を引き起こしているのがサーバーへのラウンドトリップであったとしても驚かないでしょうが、それをインストルメント化する方法もわかりません。

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 投票する
6 に答える
11562 参照

python - Python で Google App Engine に Comet / サーバー プッシュを実装する

Python で Google App Engine に Comet / Server push を実装するにはどうすればよいですか?