Meteor user status
Reactively setup user's [on
|off
]line and idle status into Meteor.user().profile.online
, returns Boolean
value.
Install:
meteor add ostrio:user-status
Usage
Simply add and use with accounts-base
and accounts-password
packages, ostrio:user-status
will work just behind it on the background, - doesn't requires any setting up
Updated user's object
1User = 2 username: String 3 emails: [Object] 4 createdAt: Date 5 updatedAt: Date 6 profile: 7 location: 8 ip: String # --> Current or last used user's IP 9 online: Boolean # --> Is user online 10 idle: Boolean # --> Is user online but idle 11 lastLogin: Date # --> Current or last login time 12 connection: String# --> Current or last used DDP Connection ID
Idle Status
Why idle?: Some apps require your constant attention. Such apps often include games, media players, anything that is CPU/battery intensive, and so on. For these kinds of apps, it may be important (as well as user-friendly) to do something when a user is no longer actively interacting with your app.
To control idle status in current client use Session.get('UserStatusIdle')
For example, let's redirect idle users to almost blank page, using iron-router
package:
Pause Template (pause.jade)
template(name="pause") h1.center You are on pause
Create routes (routes.coffee)
1### 2@description Catch all routes 3### 4Router.onBeforeAction -> 5 Meteor.wrapAsync( (route) -> 6 if !route.route.options.omitted 7 Session.set 'prev_href', route.url 8 9### 10@description Create route map 11### 12Router.map -> 13 @route 'index', 14 template: 'index' 15 path: '/' 16 17 @route 'pause', 18 template: 'pause' 19 path: '/pause' 20 omitted: true 21 22### 23@description Check wherever user is idle, redirect him to `/pause`, 24 if user is active again redirect to previous URL 25### 26Tracker.autorun -> 27 if Session.get 'UserStatusIdle' 28 Session.set 'UserStatusOnPause', true 29 Router.go('/pause') 30 else if !Session.get('UserStatusIdle') and Session.get 'UserStatusOnPause' 31 Session.set 'UserStatusOnPause', false 32 Router.go(Session.get('prev_href'))