v1.0.6Published 8 years ago

This package has not had recent updates. Please investigate it's current state before committing to using it in your project.

Meteor Presence

A very simple presence package, to track who's online, etc.


$ meteor add tmeasday:presence


Once added to your project, a new Meteor collection called Presences is available.

All active connections are then stored in this collection. A presence document from an authenticated user will contain their user id on the userId field.

NOTE: The package doesn't publish the presences by default, you'll need to do something like:

1Meteor.publish('userPresence', function() {
2  // Setup some filter to find the users your user
3  // cares about. It's unlikely that you want to publish the 
4  // presences of _all_ the users in the system.
6  // If for example we wanted to publish only logged in users we could apply:
7  // filter = { userId: { $exists: true }};
8  var filter = {}; 
10  return Presences.find(filter, { fields: { state: true, userId: true }});

And of course, don't forget to subscribe.


State function

If you want to track more than just users' online state, you can set a custom state function. (The default state function returns just 'online'):

1// Setup the state function on the client
2Presence.state = function() {
3  return {
4    currentRoomId: Session.get('currentRoomId')
5  };

Now we can simply query the collection to find all other users that share the same currentRoomId

1Presences.find({ state: { currentRoomId: Session.get('currentRoomId') }});

Of course Presence will call your function reactively, so everyone will know as soon as things change.


Please! The biggest thing right now is figuring how to write tests.