Domanda

ho creato un CometServlet secondo questo esempio http: //tomcat.apache .org / tomcat-7.0-doc / aio.html . Poi ho cercato di ottenere i dati da esso utilizzando jQuery. Il codice è il seguente:

$(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);
    });
});

Il problema è che la funzione di successo non lo fa grilletto (anche se posso vedere nella console Firebug che i dati provengono). Penso che accade perché il server non si chiude uno scrittore di risposta, ma è un obiettivo di lungo polling:)

Se uno ha qualche idea come può essere risolto?

È stato utile?

Soluzione 2

La soluzione del problema è quella di aggiungere timer per il controllo del flusso di lungo sondaggio per un nuovo data. Grande spiegazione è qui: http: / /www.bennadel.com/blog/1976-Long-Polling-Experiment-With-jQuery-And-ColdFusion.htm

Grazie a tutti.

Altri suggerimenti

È necessario sovrascrivere il xhr onreadystatechange al fine di verificare la presenza di readyState === 3 con jQuery .ajax(). Esempio:

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

xhr.onreadystatechange = function() {
     xhr._onreadystatechange();         // execute original handler
     if (xhr.readyState === 3) alert('Interactive');
};
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top