Question

J'ai créé un CometServlet selon cet exemple http: //tomcat.apache .org / tomcat-7.0-doc / aio.html . Alors j'ai essayé d'obtenir des données de l'aide JQuery. Le code est le suivant:

$(function() {

        $.longPoll = function(url, success, error) {
        $.ajax({
            url : url,
            success: function(data, status) {
                $.longPoll(url, success, error);
                if (success) {
                    success(data, status);
                }
            },
            error: function(data, status) {
                $.longPoll(url, success, error);
                if (error) {
                    error(data, status);
                }
            }
        });

    };

    $.longPoll("./comet", "", function(data, status) {
        alert("success:" + data);
    }, function(data, status) {
        alert("error:" + data);
    });
});

Le problème est que la fonction de succès ne déclenche pas (même si je peux voir dans la console Firebug que les données proviennent). Je pense que cela se produit parce que le serveur ne ferme pas un écrivain de réponse, mais il est un objectif de long polling:)

Est-ce que quelqu'un a des idées comment il peut être résolu?

Était-ce utile?

La solution 2

La solution du problème est d'ajouter la minuterie pour vérifier le flux long sondage pour une nouvelle donnée. Grande explication est ici: http: / /www.bennadel.com/blog/1976-Long-Polling-Experiment-With-jQuery-And-ColdFusion.htm

Merci tout le monde.

Autres conseils

Vous devez remplacer le xhr onreadystatechange afin de vérifier readyState === 3 avec jQuery .ajax(). Exemple:

var xhr = $.ajax({});
xhr._onreadystatechange = xhr.onreadystatechange;  // save original handler

xhr.onreadystatechange = function() {
     xhr._onreadystatechange();         // execute original handler
     if (xhr.readyState === 3) alert('Interactive');
};
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top