0

私は Facebook のようなメッセージング システムに取り組んでいます。Facebookと同じように、左側に会話のリストがあり、右側にメッセージを読み込むボックスがあります。

基本的なシステム (PHP/MySQL) が完成しました。以下に、その構造に関する情報を示します。

  • messages.php - URL パラメーターに基づくメイン ページ。.htaccess で書き換え:

    例:

    1. URL = http://www.domain.com/messages/ - 右ボックス: 新しいメッセージを送信するフォームを表示します。
    2. URL = http://www.domain.com/messages/UsernamegetUserMessages.php -ログインしているユーザー間のメッセージを読み込み Username、右ボックスに表示するためのAjax 呼び出し。

  • getUserMessages.php - ログインしているユーザーと選択されたユーザーの間のデータベース メッセージから取得します。出力 HTML を表示する準備ができています。

現在、システムは部分的に Ajax 化されており、Facebook のようにそうなってほしいと思っています。

現在、Ajax化された部分は次のとおりです。

ユーザーが会話を表示すると、自動的に新しいメッセージが表示され、最後のメッセージで会話リストが更新されます。

ユーザーが会話を表示していない場合、受信した新しいメッセージを取得し、会話リストを更新します。

これは PUSH サービスを使用して行われ、ユーザーにリアルタイムのエクスペリエンスを提供します。

私はこれを改善し、そのように動作させたい:

ユーザーが会話リストをクリックすると、右側のボックスにメッセージが読み込まれ、ページ全体をリロードせずにアドレス バーの URL が変更されます。

ユーザーが会話をクリックしたときにメッセージをロードする部分は簡単に実行できますが、開始する前に次の 2 つの質問があります。

1.ユーザーの会話を表示しているときに、ページをリロードせずにアドレス URL を変更するにはどうすればよいですか?
私は答えを見つけました。

2.会話をキャッシュするにはどうすればよいですか? そのため、ユーザーが 2 つの会話を切り替えた場合、php ファイルを再度呼び出してデータベースにすべてのメッセージを照会するのではなく、新しいメッセージのみを追加します (別の php ファイルを介して未読メッセージのみを取得する可能性があります)。

編集

私は解決策を思いついた:

ユーザーが会話を開くと、Ajax 応答全体 (つまり HTML) を次のような変数にキャッシュします。選択された会話の場所はmessages-nどこですか。ユーザーがその会話をもう一度クリックすると、が設定されているかどうかを確認します。つまり、それを印刷してajaxリクエストを実行し、未読メッセージのみを取得して追加します。それは、実際のコードに到達しなかった私の心の中でのみです。nuser_idmessages-n

うまくいくでしょうか?

4

1 に答える 1