http://www.providesupport.comおよびhttp://www.liveperson.com/に似た基本機能を備えたライブ ヘルプ チャット システムを開発します。
アプリケーションの構成方法がわかりません。管理コンソールを使用してさまざまなチャットを管理するサポート スタッフとエンド ユーザーが対話するための Web ベースのチャット スクリプトが必要です。PHP/JavaScript/AJAX を組み合わせて使用してエンド ユーザーのチャットを実装し、Java を使用して管理パネルを構築することを計画しています。設定やチャットなどを保存するための MySQL データベースもあります。
含めたい主な機能は次のとおりです。 - 複数の同時チャットのサポート - 複数のオペレーター - オペレーター間のチャットの転送 - 「ユーザーが入力中」通知 - データベースへの各チャットのログ記録 - オンライン/オフライン モード
私は、システムの基本的なアーキテクチャ、特にチャット要素がどのように機能するかについて、3 つの可能なアプローチを考え出しました。どちらのアプローチが最適かはわかりませんが、正しい方法で私を指摘し、私が見逃した長所/短所を指摘していただければ幸いです。
アプローチ 1 - チャット用の静的 HTML ファイル
PHP ユーザー チャット ボックスは、チャットを含む HTML ファイルへの書き込みと読み取りを行います。次に、このファイルを数秒ごとにリロードして、更新が表示されるようにします。Java 管理側も同様のことを行います。
利点: - メッセージはずっとログに記録されます。- オペレーターは、異なる HTML ファイルをロードすることにより、異なるチャットを管理できます - 異なるオペレーターが同じチャットをロードして、ユーザーの転送を可能にできます
短所 - ユーザーが通知を入力すると、別の方法が必要になります
アプローチ 2 - チャットを保存する MySQL データベース
チャットは、新しいメッセージが入力されるたびに MySQL データベースに書き込まれます。管理者とユーザー側は、数秒ごとにデータベースの更新をチェックし、更新があればチャット ウィンドウをリロードします。
利点: - 各メッセージが DB に格納されるため、メッセージは常にログに記録されます。- オペレーターは、異なる SQL クエリを介して異なるチャットを管理できます - 異なるオペレーターが同じチャットをロードして、ユーザーの転送を許可できます
短所: - ユーザーが通知を入力していると、別の方法が必要になる - データベースが非常に大きくなる - データベースに常にクエリを実行すると、サーバーの負荷が高くなり、大きなテーブルでは遅くなる可能性がある
アプローチ 3 - 直接ソケット接続
PHP Web エンドには、対話している Java 管理クライアントへの直接ソケット接続があります。すべてのチャット データはこれを通過し、チャットが終了するとデータベースに書き込まれて保存されます。
利点: - 新しいメッセージがいつ受信されるかを各当事者が知るので、迅速になります - 「ユーザーが入力中です」メッセージはソケット接続を介して送信できます - データはログに記録されます
短所: - ソケット接続が失われ、チャットが終了する可能性があります。- オペレーター間のチャットの転送がどのように機能するかわかりません
概要
では、要約すると、どの方法が最適でしょうか? 私が考えていないより良い方法はありますか?HTML5 Web ソケットを確認しましたが、ブラウザとの互換性が必要です。
これに加えて、管理者ユーザーがログインしているかどうかに応じてオンライン/オフライン インジケーターを表示するにはどうすればよいですか?
コードなどとは対照的に、より一般的な概要を求めていますか?
ご協力いただきありがとうございます。