2011-06-09 14 views
7

¿Es posible utilizar jquery para mantener abierta una conexión HTTP y transmitir datos?Transmisión de fragmentos JSON a jquery

de mi servidor web, me sale el siguiente (cada objeto JSON está separado por un salto de línea)

HTTP/1.1 200 OK 
Content-Type: text/plain 
Transfer-Encoding: chunked 

{"a":{"uptime":15876}} 
{"a":{"uptime":15877}} 
{"a":{"uptime":15878}} 
{"a":{"uptime":15879}} 
... 

En mi página web que estoy haciendo:

$.ajax({ 
     type:  "GET", 
     url:  'http://server/stream', 
     data:  function(data) { console.log("data="+data); }, 
     timeout: 20000, 
     dataType: "text", 
     error:  function(XMLHttpRequest, textStatus, errorThrown) { console.log(textStatus); }, 
     success: function(data) {console.log("done"+data); }, 
     cache:  false 
    }); 

veo ninguna salida y Firebug afirma que no hubo respuesta a la solicitud HTTP, veo un spinner en la pestaña de Firefox.

tcpdump muestra que el navegador está recibiendo datos, pero nunca veo ningún registro de la consola, casi como si todo estuviese siendo amortiguado para imprimir al finalizar.

¿Qué me estoy perdiendo?

Respuesta

2

Lo que está tratando de hacer se considera long polling. No es fácil de conseguir con jquery, lo que es posible que desee ver, y esto podría ser demasiado, es una tecnología de servidor sin bloqueo como node.js con el que podría utilizar este plugin con jQuery.

1

No realmente. El navegador no entrega los datos a jquery hasta que se cierra la conexión, por lo que no funcionará de la manera que desee.

Necesita utilizar algo como socket.io o la tristemente descuidada hookbox para administrar una conexión de websocket para usted.