Node.js (Express フレームワーク) と socket.io を使用してリアルタイム Web サイトを作成しています。ある時点で、誰かが「オンライン」であるかどうかを検出する必要があります (これは、基本的に誰かが Web ページを開いた場合です)。
Facebook チャットは、このグループの例だと思います。しかし、その背後にあるエンジニアリング ロジックは何なのでしょうか?
どうもありがとう!
Node.js (Express フレームワーク) と socket.io を使用してリアルタイム Web サイトを作成しています。ある時点で、誰かが「オンライン」であるかどうかを検出する必要があります (これは、基本的に誰かが Web ページを開いた場合です)。
Facebook チャットは、このグループの例だと思います。しかし、その背後にあるエンジニアリング ロジックは何なのでしょうか?
どうもありがとう!
Facebook のこのスライドショー ( http://www.erlang-factory.com/upload/presentations/31/EugeneLetuchy-ErlangatFacebook.pdf ) では、そのメッセージング システムについて詳しく説明しています。システムには、ブラウザーとの TCP 接続を維持し、接続されたユーザー リストを Presence Server に定期的にプッシュするコメット (チャネル) クラスターがあります。そのため、Web ページ (PHP) は、ユーザーがオンラインかどうかにかかわらず、Presence Server にクエリを実行できます。
クライアントは、クライアント側の JS に実装されたキープアライブ メッセージをサーバーに定期的に送信します。
サーバーが一定のタイムアウト期間内にキープアライブを受信しない場合、ユーザーをオフラインとしてマークできます。また、websocket が明示的に閉じられている場合にもそうすることができます。