Flash ベースのチャット クライアントは十分に堅牢ではありませんか?他にどんな方法があるでしょうか?

StackOverflow https://stackoverflow.com/questions/2373026

  •  24-09-2019
  •  | 
  •  

質問

私は、グループに属するユーザーが投稿したメッセージをユーザー名と書き込み時刻とともに表示する、Flash ベースのチャット クライアントを開発しました。データはグループ ID、ユーザー ID、メッセージとともに mysql データベースに保存されるため、チャット セッションを超えて保持され、後でログインしたユーザーがチャットというよりは掲示板のようなディスカッションを確認できるようになります。ユーザーがメッセージを作成すると、チャット クライアントが即座に更新され、リアルタイム チャットのように見えるようにしたいと考えています。私のこれまでの解決策は、データベースに新しいコメントを問い合わせてこれを Flash に返す PHP ページを呼び出すインターバルを Flash コードに含めることでした。

私が読んだところによると、このアプローチはロングポーリングと呼ばれるものだと思います。そうですか?これはボリュームに対して十分に堅牢ですか?変更があった場合は、データをクライアントにプッシュすることを検討したほうがよいでしょうか?これらの変化を検出するにはどうすればよいですか?たとえば APE を調べましたが、これがメッセージをデータベースに保存するとは思いません。

助言がありますか?

役に立ちましたか?

解決

ポーリングの悪い点は、すぐに費用が高額になる可能性があることです。

オンラインに 10,000 人のユーザーがいて、チャットの遅延を 1 秒以内にしたいと仮定します。次に、サーバーに 1 秒あたり 10,000 リクエストを攻撃します。

小さなことや、最新である必要がないことについては、シンプルで間違いが起こりにくいため、ポーリングは良いアプローチです。

これがチャットを使用する最大 100 人までの小さなコミュニティだけの場合は、問題にはなりません。

それとは別に、APE、SmartFox、Red5、またはさまざまなものを使用して永続的なリレーサーバーを作成できます。すべてのクライアントに永続的に接続し、変更をクライアントに通知するサーバー (例:新しいメッセージ)。

いつものように、私の個人的なアドバイスは、 ハクス. 。使用できます チャットチュートリアル 始めるために。Haxe はかなり急な学習曲線を必要としますが、それだけの価値は十分にあると思います。ActionScript と PHP の両方を残してよかったと思います。

編集: あなたが説明しているものはそうではありません ロングポーリング. 。また、少なくとも古典的に Apache で使用されている場合には、PHP でロングポーリングを実行することはほとんどできません。Apache は一定数の PHP プロセスを作成します。リクエストが到着するたびに、空いている PHP プロセスを探してリクエストを処理させます。PHP プロセスが完了すると、クライアントに応答が返されます。利用可能な空きプロセスがない場合は、プロセスが利用可能になるまでリクエストをバッファリングします。したがって、従来の方法で PHP でロングポーリングを実行しようとすると、サーバー全体が完全にブロックされる可能性があります。

他のヒント

あなたが新しいメッセージを受信した時はいつでも、あなたはそれの変化を警告して、クライアントにアップデートを渡すこと/データベースを監視するために、サーバ上のアプリケーションのいくつかのフォームを実装しなければならないアプリケーションに通知したい場合。

あるときにだけトラフィックを生成しているこの方法 - あなたは、低トラフィックのシナリオを考えている場合ので、

これは、あなたが関係なく、サーバーの地獄をノックすることがありますポーリングして、ちょうどポーリングよりも効率的でなければなりませんその理由に...

あなたはコメントを入力すると、あなたのクライアントは、変更の(ウェブサービス経由)で直接このアプリケーションに通知することもでき、このヘルパーアプリは、データベースを更新することができ...

私はチャットプログラムには専門家だけれどもそれは指摘しておかなければ - 個人的に1に関与したことがない...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top