2012-04-22 3 views
1

私は、この2つのユーザー間でかなりシンプルなメッセージングシステムを実装しています(CakePHPを使用する方が正確です)。別のユーザーのブラウザでイベント後に1人のユーザーのWebページを更新します。

すべて正常に動作し、1人のユーザーがメッセージを送信し、もう1人のユーザーがメッセージを受信します。唯一の問題は、2番目のユーザーがメッセージを表示するためにページを更新する必要があることです。

最初のユーザーがメッセージを送信したときに、2番目のユーザーのブラウザに最新表示する方法はありますか?メッセージはMySQLデータベースに保存されます。ユーザーがメッセージングページに行くと、私は彼に属する最後から最初のすべてのメッセージをデータベースから取り出して表示します。

簡単な方法は、定期的にページを更新するJavaScript関数を作成することですが、これは最適な解決策ではなく、ユーザーにとっては迷惑になる可能性があります。理想的には、ユーザーが新しいメッセージを受け取ったときにページをリフレッシュする必要があります。

私が考えてきたもう一つの方法は、関数のAJAX呼び出しを作成し、最後に受信したメッセージのdatetimeを渡すことですページに入り、次に新しいメッセージをチェックし、真の場合はページを更新します。私はそれを動作させることができればこれは悪くないでしょうが、このページの他の問題には他にも何かが起こっていることを暗示しています。

これを行う方法は他にありますか?

+0

定期的な 'ajax'チェックを使うべきだと思います。 –

+0

AJAX経由で定期的に新しいメッセージをチェックした場合に得られる「その他の問題」は何ですか?あなたはサーバーからクライアントへのデータを取得するためにいくつかの接続を持たなければなりません。それを得る他の方法は、WebsocketまたはCometのような接続です。 – Carsten

答えて

3

Socket.ioとNode.jsを見てください。それらはあなたのようなリアルタイムのことを可能にし、socket.ioは古いブラウザと下位互換性があります。

関連する問題