Sondage du serveur avec JavaScript

Quelle est la meilleure pratique pour polling server avec JavaScript pour une application qui doit rafraîchir les données très rapidement? J'utilise jQuery pour front-end et Java Spring Framework pour backend.

exemple de données mises à jour pourrait être la liste des éléments qui sont mis à jour très rapidement (toutes les 1 seconde).

25
demandé sur Daniel Vassallo 2010-08-27 14:17:00

3 réponses

vous pouvez utiliser les fonctions Ajax de jQuery pour sonder le serveur à chaque seconde environ. Ensuite, le serveur peut répondre avec des instructions au navigateur en temps quasi réel.

vous pouvez également considérer long polling au lieu de ce qui précède, pour réduire la latence sans augmenter la fréquence des scrutins.

, Citant Comète Quotidien: Le Long Du Scrutin Technique :

la technique de la comète à sondage long est une technique qui optimise le sondage traditionnel pour réduire la latence.

les sondages traditionnels envoient un XMLHttpRequest au serveur à intervalles fixes. Par exemple, ouvrez un nouveau XMLHttpRequest toutes les 15 secondes, recevez une réponse immédiate, et fermez la connexion.

Long-polling envoie une requête au serveur, mais une réponse n'est pas retournée au client tant qu'elle n'est pas disponible. Dès que la connexion est fermée, soit en raison d'une réponse à la réception par le client ou, si une demande, une nouvelle connexion est établie. Il en résulte une réduction significative de la latence, car le serveur a généralement une connexion établie lorsqu'il est prêt à retourner des informations au client.

en plus de ce qui précède, je vous suggère également de vérifier la réponse acceptée pour le post de débordement de pile suivant pour un détail description de la technique de sondage long:

39
répondu Daniel Vassallo 2017-05-23 11:55:10

je deuxième Daniel suggestion du pour utilisation de longue sondage ou à pousser. Découvrez

CometD est un bus évolutif de routage D'événements basé sur le protocole HTTP qui utilise un modèle de technologie Ajax Push connu sous le nom de Comet. Le terme "Comet" a été inventé par Alex Russell dans son article Comet: Low Latency Data for the Browser.

Ils ont une page expliquant comment obtenir ce travail avec le printemps:

3
répondu Gordon 2017-05-23 10:29:31

à partir de 2018, vous devez utiliser la fonction fetch avec la syntaxe promise:

<script type="text/javascript">
setInterval(function(){
  fetch("your_serverside_script.php") // Any output from the script will go to the "result" div
  .then(response => response.text())
  .catch(error => document.getElementById("result").innerHTML = error)
  .then(response => document.getElementById("result").innerHTML = response)
}, 1000); // Poll every 1000ms
</script>

<div id="result">result will appear here</div>
1
répondu Simon Rigét 2018-04-03 19:46:02