Simple interrogation exemple avec JavaScript et jQuery
Je suis en train de créer un site web en temps réel analytics tableau de bord, qui crée un connexion HTTP vers le serveur à l'aide de jQuery/JavaScript asynchrone à interroger le serveur pour les mises à jour les données et quand ils se produisent.
L'évidence de départ pour ce qui serait d'utiliser un XMLHttpRequest
de l'objet ou du jQuery $.ajax
méthode pour envoyer un GET
ou POST
demande au serveur de manière asynchrone demander certaines données.
Cependant, au-delà de l'envoi d'une requête à la fois à l'aide d'un setInterval
méthode à chaque 30 seconds
je ne suis pas sûr de savoir comment faire la connexion au serveur persistant. Fondamentalement, je veux seulement envoyer une requête http et d'assurer la connexion au serveur reste ouvert pour le scrutin!
Mon exemple de code avec setInterval
est comme suit:
<div id="analytics"></div>
<script>
var analytics = document.getElementById('analytics');
setInterval(function(){
$.ajax({ url: "http://server.com/", success: function(data){
analytics.innerHTML = data;
}, dataType: "json"});
}, 30000);
</script>
http ne fonctionne pas de cette façon
Je suppose que les deux raisons que je veux persistance: (1) il veillera à ce que mes mises à jour sont de plus en temps réel et (2) je pense que sa meilleure performance c'est à dire moins de surcharge le serveur avec plusieurs demandes?
comme charlietfl dit, http n'est pas comme les connexions tcp etc. et il ne fonctionne pas de cette façon. Utiliser les websockets si vous devez avoir un lien réel. d'autre part, je ne pense pas qu'il y est quelque chose de mal avec l'envoi d'une requête ajax fréquemment, en particulier toutes les 30 secondes.
si vous faites le long du scrutin, vous aurez besoin d'une attention particulière de votre côté serveur (non-bloquant i/o), regardez socket.io, ou la recherche de la comète projets pour votre serveur
OriginalL'auteur technojas | 2012-12-25
Vous devez vous connecter pour publier un commentaire.
Après une recherche en ligne, c'était la réponse que je cherchais qui ne pas utiliser
sockets.io
niWebSockets
mais n'utilisezjQuery
, profitant de sacomplete
méthode pour créer une artificielle boucle:Source est Tian Davis de Technoctave: http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
timeout:30000
approche.En outre,
poll
sera appelée dès que chaque réponse HTTP est reçu - sans délai - si le code n'est certainement pas répondre à votre non-volée exigence.l'appel complet, même après un délai d'attente (erreur), vous devez être penser à propos de succès ici.
Je pense toujours au sujet de la réussite. C'est ce que les optimistes ne!
Ce code semble ignorer la valeur de délai d'expiration, et les appels de la fonction de boucle follement.
OriginalL'auteur technojas