2017-09-21 1 views
0

Je travaille sur un projet dans lequel l'utilisateur ouvre des onglets qui se connectent chacun à un canal PubNub et écoutent les événements. Ces onglets ouverts sont ensuite représentés dans un onglet de gestion afin que l'utilisateur puisse voir tous les onglets qui sont connectés. Actuellement, nous utilisons leur présence pour voir qui est connecté et qui envoie également des messages affichant des messages de jointure, de sortie et de temporisation. Le problème se résume à si l'utilisateur ferme simplement un onglet, je ne peux pas envoyer un message de désabonnement à la chaîne et donc je dois attendre que PubNub appelle un délai d'attente sur cette connexion pour le retirer de l'onglet de gestion . J'ai modifié leur option de rythme cardiaque pour qu'elle soit beaucoup plus courte, mais ce serait vraiment bien de l'avoir beaucoup plus jusqu'à la seconde quand ces connexions se ferment. Ma pensée était peut-être un Web Worker ou quelque chose de similaire qui peut être engendré pour simplement prendre soin d'envoyer un message de désabonnement, mais il semble que ce ne soit pas possible car ce que je comprends le travailleur web devient inutilisable si la page parent qui a engendré il se ferme?Est-ce qu'un travailleur Web ou une fenêtre de gestionnaire similaire peut fermer des événements?

Y a-t-il un moyen de faire quelque chose comme ceci ou est-ce que ma meilleure option est de laisser le délai d'attente prendre effet et de gérer l'onglet du gestionnaire attendant que le délai d'attente soit appelé?

+1

WebWorker est peut-être une option mais dépend fortement du navigateur. Et si vous n'êtes pas préoccupé par les dépendances du navigateur, vous pouvez simplement compter sur le support du navigateur pour sendBeacon ou sur l'événement onbeforeunload pour effectuer le désabonnement. Mais vous pouvez également activer TCP_FIN sur votre module complémentaire Presence pour vos clés PubNub qui enverront un événement leave lorsque l'onglet est déchargé. Attention, car cela pourrait avoir des problèmes de performance de déchargement de page si vous êtes abonné à beaucoup de canaux. S'il vous plaît laissez-moi savoir si cela est utile et si vous avez d'autres questions. –

+0

@CraigConover C'est incroyable! Je ne savais pas que c'était ça! Je vous remercie! – Jordan

+0

Je ne sais pas ce que j'ai fait mais - belle! Heureux que cela vous rende heureux;) Ajout de mon commentaire comme réponse officielle. –

Répondre

0

PubNub et navigateur Fenêtre/Onglet Fermer Evénements

Le WebWorker pourrait être une option, mais il est très dépendante navigateur. Et si vous n'êtes pas préoccupé par les dépendances du navigateur, vous pouvez simplement compter sur le support du navigateur pour sendBeacon ou sur l'événement onbeforeunload pour effectuer le désabonnement. Mais vous pouvez également activer TCP_FIN sur votre module complémentaire Présence pour vos clés PubNub qui enverront un événement de congé lorsque l'onglet est déchargé. Attention, car cela pourrait entraîner des problèmes de performance lors du déchargement de la page si vous êtes abonné à de nombreux canaux parce que c'est un appel bloquant.