Meteor.onConnection - Get userId on disconnect


#1

Hey,
I’m trying to access the user id if the user disonnects, to mark him as offline. This is my current code:

Meteor.onConnection((obj) => {

 obj.onDisconnect(() => {
 console.log(this.userId);

 });

});

The problem is, that this.userId is undefined. Is there any other way to get the disconnect event?


#2

You could try tracking the connection id from the onConnect callback. This can be used to index into the Meteor.server.sessions object to get a bunch of useful information - including the userId if there is a user associated with that connection.

 Meteor.server.sessions[connectionId].userId; // returns (for example): 'RphM4g8DqAmBJgHfx' or null if no userId

#3

Hey,
thanks for the reply. I’ve decided to track the user status within a global subscription, f.e.:

Meteor.publish("contacts", function ()  {

    if(!this.userId) {
        this.ready();
        return false;
    }

    var userId = this.userId;

    this._session.socket.on("close", Meteor.bindEnvironment(function()
    {
        //Doing something if the user disconnects.
    }));


    return Contacts.find({user1:this.userId});
});