Domanda

Devo scoprire lo stato dell'utente, ovvero se l'utente è online / offline utilizzando WebSeets in vele.js nella mia applicazione web.

per favore aiutami.Grazie mille

È stato utile?

Soluzione

A partire da vele V0.9.8, è possibile utilizzare le funzioni onConnect e onDisconnect in config/sockets.js per eseguire un codice ogni volta che una presa si collega o si disconnette dal sistema.Le funzioni ti danno accesso alla sessione, in modo da poter utilizzare che per tenere traccia dell'utente, ma tenere presente che solo perché un socket disconnette, non significa che l'utente abbia disconnesso!Potrebbero avere diverse schede / Windows aperte, ognuna delle quali ha la propria presa ma tutto ciò condivide la sessione.

Il modo migliore per tenere traccia sarebbe quello di utilizzare i metodi Pubsub delle vele.Se si dispone di un modello User e un UserController con un metodo login, potresti fare qualcosa come nelle ultime vele Build:

// 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!
    }
  }

}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top