Pregunta

I creó una CometServlet según este ejemplo http: //tomcat.apache .org / tomcat-7,0-doc / aio.html . Luego trató de obtener datos de él usando jQuery. El código es el siguiente:

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

El problema es que la función de disparo éxito no lo hace (aunque puedo ver en la consola de Firebug que los datos proceden). Creo que se debe a que el servidor no se cierra un escritor respuesta, pero es un objetivo de largo de votación:)

¿Alguien tiene alguna idea de cómo se puede solucionar?

¿Fue útil?

Solución 2

La solución del problema es añadir temporizador para el control de la corriente de largo para un nuevo sondeo de datos. Gran explicación está aquí: http: / /www.bennadel.com/blog/1976-Long-Polling-Experiment-With-jQuery-And-ColdFusion.htm

Gracias a todos.

Otros consejos

Se necesita sobrescribir el xhr onreadystatechange con el fin de comprobar si hay readyState === 3 con jQuery .ajax(). Ejemplo:

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

xhr.onreadystatechange = function() {
     xhr._onreadystatechange();         // execute original handler
     if (xhr.readyState === 3) alert('Interactive');
};
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top