1

約 100 人のアクティブ ユーザーがいるシステムでチャットを使用しています。チャットは、データベースからデータをフェッチする php スクリプトに対して 4 秒ごとに ajax 質問を実行する javascript で構築されています。サーバー上で約 100 人のユーザーがオンラインになっている場合、サーバーは非常に遅くなります。

ajax の質問を含む JavaScript 間隔を使用するよりも、チャットを作成するためのより良い方法はありますか?

よろしく / H

4

2 に答える 2

1

これは、一方向リクエストを使用する際の問題です。クライアントは、新しい情報があるかどうかをサーバーに永続的に問い合わせる必要があります。その結果、サーバーにいくらかの料金が追加されます。wiki のポーリングを参照してください。

解決策は、双方向要求システムを使用することです。これにより、サーバーは、着信クエリの応答を待つだけでなく、それ自体でクライアントにデータを送信できます。これにより、ポーリングの原則が取り除かれ、サーバーからいくらかの料金が発生します。

これには3つの解決策があります:

  • Java アプレット
  • フラッシュアプ​​リケーション
  • ajax クエリを websocket 接続に置き換える

おそらく、3 番目のソリューションは、現在のアーキテクチャに新しいテクノロジが含まれていないため、セットアップが最も簡単です。

于 2013-04-10T14:56:47.577 に答える
1

ajax 通信にタイムアウトを使用することは、おそらく最悪の解決策です。

Websockets または AJAX Longpolling を使用することをお勧めします。Websockets で動作する jquery プラグインがあります (グレースフル デグラデーション)。おそらく、これらすべてをきちんとしたフレームワーク (node.js サーバーサイド) に結合するsocket.ioを試してみたいと思うかもしれません。

この回答は、サーバー側に PHP を使用してこれを実現する方法についての情報を提供します。

于 2013-04-10T15:01:05.273 に答える