2008-10-03 39 views
10

Por HTTP Streaming Comet, me refiero a las variaciones "para siempre iframe"/"para siempre" XHR que no cierran la conexión después de los datos ha sido empujado desde el servidor, en lugar de encuesta estándar y largo de votación que se cierran y enviar un nuevo solicitud para cada evento push del servidor.¿Es Http Streaming Comet posible en Safari?

Miré el paquete dojo.io.cometd y parece que sólo tienen implementaciones de votación. También encontré this example, pero parece que no funciona en webkit incluso después de un poco de retoques (lo hice funcionar en cualquier otro lugar). This announcement from the safari blog parece sugerir que es posible con xhr, pero no pude encontrar ningún código o documentación, ni pude hacerlo funcionar.

¿Alguien sabe de una técnica, la escritura, la biblioteca o de demostración que lleva a cabo transmisión HTTP cometa en los navegadores WebKit (Safari y Chrome)?

actualización

Después de un poco más de retoques, he encontrado que hay dos cosas que hay que hacer con el fin de conseguir la transmisión HTTP trabajar en Safari a través de XHR:

  • Las necesidades de respuesta tener un Content-Type: multipart/x-mixed-replace
  • la respuesta tiene que enviar algunos personajes de "ruido" antes de que el navegador comienza a mostrar las actualizaciones de forma coherente. Supongo que esto tiene algo que ver con llenar un buffer interno.

Actualización 2

finalmente conseguí que funcione en todos los navegadores que utilizan una técnica de marco flotante. La advertencia para la solución es que solo los navegadores basados ​​en WebKit deberían recibir el encabezado multipart/x-mixed-replace.

+0

Sin "/ multiparte x-mixed-replace", todavía puede obtener HTTP streaming de trabajo en Safari. Solo tienes que hacer el análisis por ti mismo. –

+0

@Leo: ¿Es posible que comparta los fragmentos de código que permitieron Http Streaming en todos los navegadores? Esto debería ser útil para mí y la comunidad. Gracias. – ManKum

Respuesta

4

Según Wikipedia, HTTP Streaming cometa se supone que es posible en todos los navegadores. "Diseño de página con marcos que no son", Ajax: la guía definitiva. O'Reilly Media, pp. 320. ISBN 0596528388, es la referencia que se cita para esta información, por lo que tal vez este libro tenga una sugerencia sobre cómo hacerlo.

Además, http://meteorserver.org/ tiene una demostración que acabo de confirmar que funciona en Chrome, de una biblioteca del lado del cliente + un servidor que envía datos al cliente.

3

es definitivamente posible: GMail hace. Si mira la sección Recursos de las herramientas de desarrollador en el último Webkit, puede verlo en acción. Tienen una solicitud llamada "enlace" que permanece abierta más o menos indefinidamente. Tengo entendido que cuando llega un nuevo correo, se encuentra con esa conexión.

3

Sí.

Necesita include a large amount (al menos 256 bytes) de basura en la parte frontal de la respuesta para que Safari se comporte.

Cuestiones relacionadas