ユーザーの状態を決定します
- オンライン(オンライン);
- オフライン(オフライン);
- アウェイ(アウェイ)。
3つの状態はすべて、マルチプレイヤーアプリケーション、チャット、フォーラムなどでユーザーステータスを表示し、内部(計算、データ交換)および外部(UI、グラフィックス)アプリケーションプロセスを整理/最適化するために使用できます。
以下のコード例はcoffeescriptで記述され、Meteorアプリケーションのフレームワーク内で動作するように設計されていますが、それでもJavaScriptのままであり、他の環境で使用できます。
ユーザーが現在アクティブであることを示すイベントを検討します。
# #@ = window @addEventListener "mousemove", _.throttle(goActive, 777), false @addEventListener "mousedown", _.throttle(goActive, 777), false @addEventListener "keypress", _.throttle(goActive, 777), false @addEventListener "DOMMouseScroll", _.throttle(goActive, 777), false @addEventListener "mouse wheel", _.throttle(goActive, 777), false @addEventListener "touchmove", _.throttle(goActive, 777), false @addEventListener "MSPointerMove", _.throttle(goActive, 777), false
追伸 アンダースコアに統合された
throttle
関数は、
goActive
の呼び出し回数を
goActive
ます;関数は1回につき1回しか呼び出されません
Webアプリケーションタブがアクティブかどうかを確認します。
# setVisibilitychange = -> if document.hidden # "" goInactive() else # " " goActive() document.addEventListener "visibilitychange", setVisibilitychange, false
ユーザーがログインしていてアクティブではないときにタブ/ウィンドウが開いてアクティブになっている場合-1分後に、ステータスを非アクティブに変更します。
# Meteor.setTimeout goInactive, 60000
goInactive
関数はユーザーを「退席中」状態に設定することに注意してください。
ステータスを「オフライン」にするには、ユーザーはアプリケーションを終了(ログアウト)するか、DDP接続を閉じる/切断する必要があります。
以下のコードはMeteor専用です。
DDP接続を切断して、ステータスを「オフライン」に設定します。
# Meteor.onConnection (connection) -> connectionId = connection.id connection.onClose () -> Meteor.users.update connection: connectionId , '$set': 'profile.online': false 'profile.idle': false
ユーザーがログインしたら、上記で使用した
connectionId
保存する必要があります。
# Accounts.validateLoginAttempt (attempt) -> if !attempt.error and attempt.user Meteor.users.update _id: attempt.user._id , '$set': connection: attempt.connection.id 'profile.online': true 'profile.idle': false 'profile.location.ip': attempt.connection.clientAddress 'profile.lastLogin': new Date() return if !attempt.error and attempt.user then true else false
クロスブラウザサポートを備えたより完全なコードは、 こちらにあります。
ユーザーにとって便利
多くのWebアプリケーションでは、すぐにユーザーの注意が必要です。 条件「離れている」(離れている)で私は提案します:
- CSSアニメーションを無効にします。
- 3Dアニメーションを無効にします。
- サーバーへのアクセス頻度を減らします(リアルタイムアプリケーションの場合)。
- ビデオ/オーディオの再生を一時停止します。
- 通知音を再生するか、大声で再生します。
- シングルプレイヤーモードでゲームを一時停止します。
簡単に言えば、開発者はユーザーと彼の個人的なデバイスの世話をし、UX(使用の質)を改善し、計算の回数を減らし、特にバッテリー電源を使用する場合にデバイスの寿命を延ばす必要があります。