2009-06-26 17 views
5

Más o menos lo contrario de la inserción en el servidor, también conocida como Comet. Me pregunto si es posible usar conexiones HTTP de larga duración para enviar información al servidor.Posible hacer push de cliente del lado HTTP?

A diferencia de un simple XHR, la conexión se mantendría vivo y datos se transmite al servidor a intervalos, ya que el usuario lleva a cabo acciones etc.

uso de tecnologías estándar que no creo que esto es posible, pero Estoy abierto a sugerencias sobre posibles explotaciones o formas ingeniosas de lograr esto. El objetivo sería completar las transferencias de datos de baja latencia al servidor para una transmisión unidireccional rápida y eficiente.

No estoy interesado en usar implementaciones de sockets con puentes flash/java debido a la molestia de servir a las políticas de dominios cruzados o de obtener la firma de java. Los piratas informáticos crudos que funcionan sin dependencias adicionales son bienvenidos. Preferiblemente, la solución se haría con javascript.

+0

No hay muchas razones para esto. Como HTTP1.1 reutiliza las conexiones, una vez que se ha establecido la primera conexión, las conexiones posteriores son increíblemente rápidas; las técnicas AJAX estándar resuelven esto sin ningún tipo de problema relacionado con el mantenimiento de conexiones de larga duración en el servidor, el manejo de fallas de conexión, etc. – jvenema

Respuesta

1

Una vez vi una charla por el hombre detrás http://orbited.org/

Es una biblioteca js que utiliza la tecnología estándar para mantener una conexión abierta entre el servidor y el cliente se puede empujar hacia abajo las cosas.

+0

Definitivamente en la línea de lo que estoy buscando, aunque sería mucho mejor si funcionara en el puerto estándar 80. –

+0

Es una conexión abstracta, sin embargo, que puede terminar usando múltiples solicitudes HTTP (hasta una por mensaje) Pero se puede ejecutar en el puerto 80 (simplemente no, por supuesto, en la misma IP que un servidor web). – Miles

1

Esto puede hacerse en una de varias formas ...

Puede keep a connection open y hace después de, o yo estoy seguro de que es posible hacer un POST de varias partes.

+0

No, definitivamente no es igual de ninguna manera. –

+0

La pregunta es sobre el envío de algunos datos, luego el envío de más datos sin comenzar una nueva solicitud HTTP, es decir. no solo los POST normales –

+0

puede mantener la conexión abierta, y ¿es posible hacer una solicitud GET de varias partes? Cualquiera de esos dos escenarios funcionaría bien. – Nippysaurus

1

esto lo hace: http://www.speich.net/projects/programming/firebug-testing.php

y mira esto: http://en.wikipedia.org/wiki/Comet_(programming)) y Google en torno a 'x-mixed-replace'

Haga su XHR en Firefox. Debe usarlo directamente o tomar el objeto XHR para establecer campos divertidos. xhr.multipart = true y usa el controlador onload, no onreadystatechange.

El servidor debe devolver los datos con el tipo mime 'multipart/x-mixed-replace'. más un separador multiparte. enjuague para obtener los últimos bytes para cada salva. Todavía estoy tratando de hacerlo sin problemas.

Safari (~ = chrome) puede hacerlo pero los detalles son diferentes. Llame a su controlador cuando esté listo Estado = 3, no 4. Y cada vez que se agrega el texto nuevo a resultText, no todo solo. No se puede hacer que nada funcione en IE.

0

Si está buscando una comunicación bidireccional entre navegador y servidor, probablemente esté buscando WebSockets. Consulte en la parte inferior del artículo de Wikipedia las implementaciones disponibles.

+0

Gracias :) Esto fue hace 3 años, los enchufes no eran tan avanzados como lo son hoy en día. –

Cuestiones relacionadas