2016-09-30 31 views
6

私は自分のウェブサイトでオンラインになっているかどうかを確認しようとしています。例えば、ユーザがサイトにログインしている場合、PHPコードは、 1 '、彼は' 0 'にログアウトします。ユーザがオンラインであるかどうかをチェックする方法

ただし、ユーザーがサイトを終了するだけで行は更新されません。ユーザーが実際にオンラインかどうかを確認するにはどうすればよいですか。

ログインはまた、次のものが含まれ、セッションを作成します

$_SESSION['logged_in'] = true; 

私はこれをチェックできる方法は?

+0

あなたがcontinuasを送信する必要がありますfacebookのように遅れてサーバーにアヤックスリクエストします –

+1

@FastSnail Facebookは最も確かにしません** not **それを行います。 – ceejayoz

+0

私はこの疑問を再開しました。なぜなら、リンクされた複製は2011年からのものであり、今や標準的なWebソケットの解決策について言及していないからです。 – ceejayoz

答えて

5

あなたは本当にこのようにすることはできません。すべてのページビューでlast_activity列を更新し、10〜15分でページビューを行っていないユーザーは非アクティブとみなすことができますが、ユーザーがPHPだけでサイトを離れた時点を正確に知る方法はありません。

これは(チャットアプリケーションの場合のように)厳しい要件がある場合は、ウェブソケットを使用してリアルタイム通信を調査する必要があります。

+0

websocketについて読むためのリンクがありますか?あなたの権利は、チャットアプリケーションのために行われることを意味しました – user2452165

+0

https://www.google.com/search?q=websockets – ceejayoz

+0

urのお返事ありがとう、私はwebsocketについてもっと読む必要があります:)しかし、それはすでに助けてくれました。 – user2452165

2

publish-subscribeパターンを使用できます。パブリッシュ・サブスクライブ・パターンとは何かを理解しましょう。

publish–subscribe is a messaging pattern where senders of messages, called publishers, do not program the messages to be sent directly to specific receivers, called subscribers, but instead characterize published messages into classes without knowledge of which subscribers, if any, there may be. Similarly, subscribers express interest in one or more classes and only receive messages that are of interest, without knowledge of which publishers, if any, there are. 

出典:以下Wikipedia

RabbitMQのMQTTアダプタを使用した例です。

は「のトピックをトピックにユーザAのアプリ「/トピック/ユーザー-A」、ユーザBのアプリを購読/ topic/user-b "に変更し、オンライン/オフライン状態をトピック"/topic/presence "にパブリッシュします。 "/ topic/presence"を購読するために、バックエンドサーバーにプログラムを作成します。すべての更新がから来ている場合は、ここでユーザーAユーザーAに、すべての友人にこの道をアップデートを公開し、その後、ユーザBがユーザAのオフライン/オンラインアップデートを受信します

   User A    User B   PresenceListener 

Subscribe  /topic/user-a  /topic/presence /topic/presence 

Publish   /topic/user-b  /topic/presence friend list 

本当の挑戦を公開する方法であると言うことができます"オフライン"。 1つのケースは、インターネットがまだアクティブな状態でユーザーがアプリを閉じると、アプリはサーバーに「オフライン」ステータスを公開できますが、インターネットが機能しなくなるとどうなりますか?

「最後の遺言」(lwt)を通過します。

LWTメッセージは、クライアントがオフラインになったかどうか(keepAliveメッセージによって処理されるかどうか)を検出することに本当に関係しません。 LWTメッセージは、クライアントがオフラインになった後の処理についてです。 LWTメッセージは、クライアントがオフラインであり、もはや公開することができないため、クライアントに代わってブローカによって公開されるメッセージを定義するために活用することができます。 GitHubのhttps://github.com/Applozic/Applozic-Web-Plugin/で利用可能なオンライン、オフライン存在とサンプルソースコードについてはhttp://tuanpm.net/what-is-mqtt/

、あなたが私たちのApplozicチャットJavascriptのプラグインのコードをチェックアウトすることができ

デモページ:

ソースhttps://www.applozic.com/docs/chat-examples/web.html

関連する問題