Comet (longue interrogation) et XmlHttpRequest statut
-
26-09-2019 - |
Question
Je joue un petit peu avec XmlHttpRequestObjects premières + Comet longue relève. (En général, je laisserais GWT ou d'une autre poignée-cadre de cela pour moi, mais je veux en savoir plus à ce sujet.)
J'ai écrit le code suivant:
function longPoll() {
var xhr = createXHR(); // Creates an XmlHttpRequestObject
xhr.open('GET', 'LongPollServlet', true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
...
}
if (xhr.status > 0) {
longPoll();
}
}
}
xhr.send(null);
}
...
<body onload="javascript:longPoll()">...
J'enveloppé l'appel longPoll()
dans une instruction if qui vérifie status > 0
, parce que je rencontrais, que quand je quitte la page (en naviguant sur un autre, ou en la rechargeant), un dernier appel de la comète inutile est envoyé. [Et sur Firefox, il provoque même des problèmes graves lorsque vous faites un rechargement de la page, pour une raison que je ne comprends pas bien encore.]
Question: Est-ce status
vérifier la bonne façon de traiter ce problème, ou est-il une meilleure solution?
La solution
Ma réponse actuelle - jusqu'à ce que faux éprouvée -. Est que la solution est correcte
Autres conseils
i comme la simplicité de cette boucle .... je pense que le script côté serveur doit dormir ou atleast boucle jusqu'à ce qu'il obtienne de nouvelles données avant son vote longtemps considéré que c'est juste sondage normal. Je voudrais ajouter quelque chose à vérifier si les reques échoue cependant. emballage que dans un bloch catch try devrait faire l'affaire