2010-10-12 24 views
0

Configuration actuelle: servlet cometD avec le plugin jQuery cometd. Disons que j'ai une salle de discussion simple qui a actuellement 2 utilisateurs (userA et userB) connectés à elle. Lorsque l'utilisateur B quitte la page, l'utilisateur doit être averti que cet utilisateur a quitté la salle. Y at-il un moyen de laisser userA savoir que l'utilisateurB est parti sans utiliser le gestionnaire unload?cometd bayeux: gestion correcte de la déconnexion de l'utilisateur lors du déchargement de la page

$ (fenêtre) .unload (function() {
/** permet de notifier les autres utilisateurs qui CurrentUserID quitté **/

});

Après avoir effectué de nombreux tests; le bloc de code ci-dessus n'est pas fiable. La seule solution que je peux penser est d'utiliser un setInterval où toutes les minutes, l'administrateur passera à travers un tableau d'utilisateur connecté, puis les "pingle" pour vérifier s'ils sont encore connectés.

Des idées? Dois-je utiliser la technique d'interrogation setInterval?

+0

Bonjour ryan. J'ai le même problème, et il est étrange que la bibliothèque Cometd ne le résolve pas en premier lieu. Avez-vous trouvé une réponse? ce sera très utile pour moi. Merci – Yaron

+0

Salut Yaron, je viens d'ajouter une réponse à ce message. J'espère que vous trouverez cela utile! – ryan

Répondre

2

Pour cela, qui sont intéressés.

Vous pouvez enregistrer une méthode "removeListener" lorsqu'un serveur expire la session d'un utilisateur.

client.addListener(new ServerSession.RemoveListener() { 
     public void removed(ServerSession session, boolean timeout){ 
      members.values().remove(session.getId()); 
      broadcastMembers(members.keySet()); 
     } 
    }); 

exemple de code complet: ChatService.java#handleMembership

0

Oui, je sais que cette question est vieux, mais pourquoi ne pas utiliser simplement le PresenceListener?