2015-10-22 1 views
0

J'utilise Atmosphere RC 2.4.5 (client Atmosphere java 1.8, jsp, tomcat 8 et javascript) pour envoyer des messages du serveur aux clients. Tout fonctionne comme prévu, et n'a pas eu de problème avec l'implémentation, mais maintenant j'ai des doutes sur la prochaine chose:Notification push en utilisant l'atmosphère

J'ai implémenté une fonctionnalité où l'utilisateur admin peut envoyer une notification à tous les utilisateurs utilisant actuellement l'application . Mais si, à cette heure précise, le message circulait dans les sockets Web, un utilisateur a cliqué sur un lien et a commencé à naviguer vers une autre page. Sa prise Web serait fermée et il ne recevrait jamais le message. Est-ce que quelqu'un sait comment cela peut être réalisé en utilisant l'atmosphère, donc aucun message ne serait perdu.

Merci à tous.

Répondre

1

Vous pouvez trouver votre solution basée sur cette page de la documentation de-js atmosphère:

Sharing connection between Browser's windows and tabs

Par défaut, la bibliothèque atmosphere.js ouvrira une nouvelle connexion (sur la base des transports disponibles : websocket, interrogation longue, streaming, sse, jsonp ou ajax) chaque fois qu'une nouvelle fenêtre ou un nouvel onglet est ouvert par le navigateur. Dans certains cas, il peut être plus efficace de partager une connexion entre des fenêtres/onglets. Pour activer le mécanisme, tout ce que vous devez faire est de définir la propriété partagée d'un objet AtmosphereRequest:

Voici par exemple:

var request = new $.atmopshere.AtmosphereRequest(); 
request.shared = true; 
request.transport = 'websocket' 
$.atmosphere.subscribe(request); 

L'une de ces lignes peut être la solution de votre problème:

request.shared = true;