2017-09-26 2 views
0

document.ononline est un événement disponible dans le navigateur. Y a-t-il un événement équivalent supporté par le code du service worker, qui n'a pas d'accès DOM?L'événement ononline est-il pris en charge dans un service worker?

Tout l'exemple de code que j'ai vu vérifie l'état du réseau au cours du traitement d'une demande. Il serait souhaitable de répondre immédiatement à la disponibilité du réseau dans le but de valider des mises à jour locales sur le serveur ou le cloud.

Le mieux que je pouvais trouver en termes de documentation a été https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope et il énumère uniquement ces événements:

  • OnActivate
  • onfetch
  • onInstall
  • onmessage
  • onnotificationclick
  • onnotificationclose
  • OnPush
  • onpushsubscriptionchange
  • onSync

Parmi ceux-ci, la synchronisation semble plus comme ce que je cherche, mais cela dépend de l'utilisation d'un SyncManager et la documentation qui se heurte à des mises en garde contre l'utilisation dans le code de production .

Répondre

0

Je ne suis pas sûr s'il y a un événement disponible dans le SW pour cela. Quelqu'un devrait confirmer cela.

Vous pouvez contourner ce problème en ayant la logique de gestionnaire d'événements ononline dans JS de votre page qui pourrait informer le SW des changements de connectivité. Ce serait également un endroit approprié pour gérer toutes les notifications dans l'interface utilisateur pour l'utilisateur.

Spesifically:

  • SW enregistre un gestionnaire d'onmessage
  • Client/la page JS enregistre un gestionnaire pour l'événement ononline
  • Lorsque des modifications de connexion, le gestionnaire informe le SW via postMessage API
  • SW reçoit le message de changement de connexion du client et agit en conséquence

Les postMes L'API sage est très utile et peut être utilisée pour transmettre des données entre la page et le logiciel. Notez qu'il n'y a pas de message spécifique pour ma proposition, il suffit de passer quelque chose comme {"new_status": "online"} etc.