-2

JavaScript、PHP、SQL (正確には PostgreSQL)のみを使用してチャットボックスを作成しようとしています。現在、X秒ごとにAJAXリクエストを使用して新しいメッセージをチェックする必要があります。

ここにはいくつかの問題があります。最大のものは、サーバーに送信されるリクエストの量です。このようなアクティブな接続は、帯域幅キラーになる可能性があります。

もう 1 つは、これらのメッセージをデータベースに保存することです。いつも。ここで、新しいメッセージをチェックする場合、新しいメッセージだけを取得するためにメッセージ テーブル全体をチェックする必要はありません。そのため、新しいメッセージだけを見つけてクライアントに送信したいと考えています。

ラチェットを見てきました。とても面白そうです。残念ながら、これは今のところ解決策にはなりません。サードパーティのツールに依存するのではなく、自分でこれを行うことを学びたいと思っています。

私がググったことから、結局のところ、これ以上のものが必要になるでしょう。何か使用するための提案があれば、ぜひ聞きたいです。しかし、PHP/SQL/JS コンボでこのチャットボックスを実行する必要があります。

このようなものにどのようにアプローチしますか?前もって感謝します。

4

2 に答える 2

2

これらの言語のチャット クライアントに対する私の個人的な好みは、最後に読み込まれたメッセージの ID を JavaScript に保存し、AJAX 呼び出しごとにそれを PHP スクリプトに戻すことです。次に、PHP はデータベースにクエリを実行し、指定された ID よりも大きい ID を持つメッセージのみを要求します。

ユーザーが最初にページをロードするとき、最新の 10 件のメッセージをロードするか、過去 5 分間のメッセージをロードするか、または自分に最適なものをロードすることで、ページの処理方法を決定できます。

私は AJAX で 5 秒ごとにサーバーにクエリを実行していますが、ユーザー数が多い場合でも負荷はそれほど大きくありません。

そうは言っても、サーバーが新しいメッセージをクライアントに通知することを含む、より効率的なソリューションがありますが、それらははるかに複雑です! 事前に作成されたソリューションを使用したくない場合は、プレーンな AJAX ポーリングに固執する必要があります。

于 2013-03-05T16:21:14.113 に答える
0

私がしたいことは、DBにメッセージを保存し、PHPを使用してメッセージを挿入/取得することです。セッションとさまざまなユーザーのログインで必要なだけ複雑にすることができます。フロントエンドではjQuery ajaxメソッドを使用する必要がありますjson_encodeを使用して json または xml で応答する PHP メソッドを呼び出して、javascript がこの情報を解釈できるようにします。

したがって、フロントエンド コードでは、ユーザーがメッセージを送信したときに ajax ポスト リクエストを実行し (Enter キーを入力にバインド)、setIntervalでポーリングを実行するか、 APE などのプッシュ ライブラリを使用してプッシュ システムを実装することができます。これにより使用する帯域幅は少なくなりますが、より優れたサーバーが必要になり、新しいメッセージがあるたびにチェックするようにサーバーで Cron を構成する必要があります。

DBについては、そのユーザーIPを使用してメッセージを送信し、メッセージテーブルに保存するユーザーを特定できます。

于 2013-03-05T16:24:55.180 に答える