1 votes

Puis-je faire en sorte qu'un site web continue à fonctionner lorsqu'il est en veille ?

Je développe une application web simple qui sera utilisée pour suivre la position GPS. L'idée générale est d'envoyer toutes les deux minutes la position GPS à un serveur par le biais d'une requête AJAX. A noter que l'appareil sera connecté à l'alimentation en permanence.

Dans l'idéal, nous avons besoin que ce programme continue à fonctionner en arrière-plan lorsque l'écran est éteint. J'ai mis en place un test avec un Nexus fonctionnant sous Lollipop et Chrome et j'ai eu un succès limité. Les requêtes continuent d'être envoyées pendant 5 à 10 minutes après l'extinction de l'écran, puis elles s'arrêtent.

Curieusement, il semble qu'il y ait encore des demandes occasionnelles. Pour mes tests, j'utilise un intervalle de 10 secondes entre les demandes, alors que dans le monde réel, l'intervalle sera plutôt de 5 à 10 minutes. Une sorte de file d'attente ? Si cela existe et que j'arrive à trouver comment l'utiliser de manière fiable, cela pourrait fonctionner.

Y a-t-il un moyen de faire en sorte qu'ils continuent à envoyer des messages indéfiniment ? Les paramètres du système d'exploitation/navigateur, ou un autre navigateur (ou les deux) peut-être ?

1voto

Mikhail Naganov Points 586

HTML5 ServiceWorker semble prendre en charge ce dont vous avez besoin via la fonctionnalité BackgroundSync / PeriodicSync. Cependant, comme ServiceWorker est encore un effort en cours, je ne suis pas sûr que les fonctionnalités soient actuellement implémentées dans Chrome. Je n'ai pas trouvé de bonnes démonstrations, seulement des propositions : https://github.com/clelland/BackgroundSync/blob/master/explainer.md

Cordova a récemment ajouté la prise en charge de la synchronisation en arrière-plan : https://github.com/MobileChromeApps/cordova-plugin-service-worker-background-sync mais cela nécessite la création d'une application Android.

Sans la prise en charge explicite d'une telle fonctionnalité par le navigateur, tous vos efforts ad hoc seront une perte de temps, puisque votre code sera garanti de ne fonctionner que lorsque le navigateur est au premier plan. Dans le cas contraire, le navigateur lui-même peut être tué par le système d'exploitation et ne pourra pas continuer à exécuter le code de votre page. La fonction de synchronisation périodique fournie par ServiceWorker implique que le navigateur planifie des tâches périodiques en utilisant les services Android correspondants, comme vous le feriez dans une application Java.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X