Je travaille actuellement sur un projet Ruby on Rails qui affiche une liste d'images.
Un élément essentiel pour ce projet est qu’il affiche les nouvelles publications en temps réel sans qu’il soit nécessaire d’actualiser la page Web. Après avoir cherché pendant un moment, je suis tombé sur des solutions et services JavaScript tels que PubNub; cependant, aucune des solutions fournies n’avait de sens.
Dans la solution JavaScript ( interrogation ), les événements suivants se produisent:
- L'utilisateur 1 affiche la liste des photos.
- En arrière-plan, le code JavaScript interroge un point de terminaison toutes les secondes pour voir s'il y a une nouvelle publication.
- L'utilisateur 2 ajoute une nouvelle photo.
- Il y a un délai de 50 ms avant le déclenchement du nouveau cycle et l'extraction des nouvelles données.
- Le nouveau contenu est chargé dans le DOM .
Cela semble étrange lorsque traduit à un exemple du monde réel:
- L'utilisateur 1 tient une pile de photos sur son bureau.
- Il se rend chez le photographe toutes les secondes et lui demande s'il en a un nouveau.
- Le photographe fait une nouvelle photo.
- Cette seconde où il / elle entre, elle peut prendre la photo et la mettre sur la pile.
À mon avis, la solution devrait être la suivante:
- L'utilisateur 1 tient une pile de photos sur son bureau.
- Le photographe prend une nouvelle photo.
- Le photographe se dirige vers la pile et la pose avec le reste.
La solution PubNub est fondamentalement la même, mais cette fois-ci, un stagiaire se promène entre les parties pour partager les données.
Il va sans dire que les deux solutions consomment énormément d'énergie car elles sont déclenchées même lorsqu'il n'y a pas de données à charger.
Autant que je sache, il n'y a pas d'explication (logique) expliquant pourquoi ce mode de mise en œuvre est utilisé dans presque toutes les applications en temps réel.