Question

Je dois trouver le statut de l'utilisateur à savoir si l'utilisateur est hors ligne/en ligne utiliser les websockets dans sails.js dans mon application web.

S'il vous plaît aider moi .Merci beaucoup

Était-ce utile?

La solution

En commençant avec des Voiles v0.9.8, vous pouvez utiliser le onConnect et onDisconnect fonctions dans config/sockets.js pour exécuter un code à chaque fois qu'un socket se connecte ou se déconnecte du système.Les fonctions vous donnent accès à la session, de sorte que vous pouvez l'utiliser pour garder une trace de l'utilisateur, mais gardez à l'esprit que juste parce que une socket se déconnecte, il ne signifie pas que l'utilisateur s'est déconnecté!Ils peuvent avoir plusieurs onglets / fenêtres ouvertes, dont chacun a sa propre prise, mais tous partagent la session.

La meilleure façon de garder la piste serait d'utiliser les Voiles PubSub méthodes.Si vous avez un User modèle et un UserController avec un login méthode, vous pourriez faire quelque chose comme dans les derniers Voiles de construire:

// UserController.login

login: function(req, res) {

   // Lookup the user by some credentials (probably username and password)
   User.findOne({...credentials...}).exec(function(err, user) {
     // Do your authorization--this could also be handled by Passport, etc.
     ...
     // Assuming the user is valid, subscribe the connected socket to them.
     // Note: this only works with a socket request!
     User.subscribe(req, user);
     // Save the user in the session
     req.session.user = user;

   });
}


// config/sockets.js

onConnect: function(session, socket) {

  // If a user is logged in, subscribe to them
  if (session.user) {
    User.subscribe(socket, session.user);
  }

},

onDisconnect: function(session, socket) {

  // If a user is logged in, unsubscribe from them
  if (session.user) {
    User.unsubscribe(socket, session.user);
    // If the user has no more subscribers, they're offline
    if (User.subscribers(session.user.id).length == 0) {
      console.log("User "+session.user.id+" is gone!");
      // Do something!
    }
  }

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top