2

複数のユーザーがいつでも同じデータセットを表示できるhtml5/javascriptアプリケーションがあります。実際の例として、カレンダータイプのページとしましょう。

つまり、user1はブラウザを開いてカレンダーページを見ており、user2もカレンダーページにあります。User2がカレンダーに変更を加え、それらの変更をuser1の画面で認識して更新したいのですが(できるだけ早く)。これを行うための最良の方法は何ですか?

現在のページと最後の更新のタイムスタンプを格納するアクティブユーザー用のmysqlテーブルを用意し、ajax呼び出しを使用して数秒ごとにサーバーにpingを実行し、更新されたタイムスタンプが新しい場合はそれを確認することを考えています。クライアント側にあるもの、新しいデータが送信され、ページが「再ロード」されます。実際のブラウザウィンドウは更新されないため、リロードを引用符で囲んでいますが、ページをリロードする関数がjavascriptを介して呼び出されます。スタックオーバーフローが更新チェックを実行する方法の一種ですが、ページが変更されたことをユーザーに通知してリロード用のボタンを提供する代わりに、自動的に実行されるはずです。user1がカレンダーで作業している場合、user2の画面が常に更新されるのは非常に煩わしいようです...

これは恐ろしい考えですか?数秒ごとにajaxリクエストでサーバーにpingを実行すると、大幅な速度低下が発生しますか?これを行うためのより良い方法はありますか?user2がすでに変更したカレンダーページの要素をuser1が更新できないことが重要であるため、どちらのユーザー側のビューもリアルタイムにする必要があります。

更新:いくつかのWebソケットの調査に基づくと、適切な解決策ではないようです。まず、古いブラウザとは互換性がなく、ie8 +をサポートしています。次に、サイトのすべてのユーザーに対してリアルタイムの更新は必要ありません。このサイトはアカウントベースのアプリケーションであり、アカウントには複数のユーザーを含めることができます。データはそれらのユーザー間でのみ同期する必要があります。他の推奨事項は素晴らしいでしょう。

4

1 に答える 1

2

これにはリアルタイムアプリが必要です。あなたはsocketioを見てください。ユーザーがログインするたびに、サーバー上の変更をリッスンします。次に、サーバーで何かが変更されると、リッスンしているすべてのユーザーに通知されます。公式 Web サイトで例を見つけることができます: http://socket.io/

于 2012-09-19T12:41:07.480 に答える