2009-06-04 17 views
5

Acabo de enterarme del AJAX Push Engine, pero se ejecuta en Linux/Apache, lo cual no es una opción para mí.¿Cómo puede enviar datos a un cliente de página web?

http://www.ape-project.org/

Actualmente con AJAX para mantener una corriente de página Tengo que consultar al servidor de frecuencia que no es ideal para un sitio de alto tráfico. La opción de enviar datos al cliente solo cuando es necesario es una gran opción, pero JavaScript nativo no es compatible con los sockets, AFAIK. Un truco sobre el que leí, pero el sitio ya no existe, es usar un módulo Flash para manejar las comunicaciones de socket y el mensaje de retransmisión a JavaScript.

El problema con la investigación de este enfoque es que "JavaScript push" como palabras clave aparece con la función push para matrices en lugar del contexto que deseo.

¿Cómo podría establecer una conexión persistente con el servidor para hacer las comunicaciones push en el navegador? ¿Necesito Flash/ActionScript o hay otra opción que funcione con todos los navegadores actualmente activos? (IE6/7/8, FF3, Safari, Chrome)

Cuando se trata del servidor, también necesito resolver las complicaciones debido a la política de Origin así como a la seguridad del puerto. Aprecio todo lo que pueda señalar que explicará las opciones disponibles.

+0

he encontrado algunas preguntas relacionadas que conducen a algunas respuestas ... y más preguntas. :) http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client http://stackoverflow.com/questions/50831/how-to-push-data- to-variety-of-different-client-types-in-near-real-time http://stackoverflow.com/questions/219868/client-notification-should-i-use-an-ajax-push-or- encuesta http://stackoverflow.com/questions/847227/real-time-chat-with-push-notification – Brennan

Respuesta

0

Esto es algo interesante, pero no leí nada acerca de los problemas de escalabilidad en estas páginas Wiki. ¿Qué hace un servidor web si tiene 10,000 conexiones abiertas de larga duración?

Además, para aquellos que no estén familiarizados con los conceptos subyacentes, es importante entender que es imposible y siempre será posible enviar datos del servidor al cliente de forma ad-hoc. Incluso si el protocolo HTTP lo admite, la red no lo haría, particularmente si hay un firewall NAT involucrado.

Por lo tanto, cualquier solución que pretenda ofrecer comunicación de servidor push debe confiar en las conexiones iniciadas por el cliente, mantenidas abiertas y eventualmente expirarán. Me preocupa esto porque debe tener consecuencias negativas para la escalabilidad y el rendimiento del servidor.

+0

Parece que Facebook y Google usan encuestas largas, y aún no se han caído. No es * imposible * de ninguna manera. – cgp

+0

Si desea abrir una conexión a un cliente desde un servidor y NAT es en la forma en que el método de golpeo del puerto se puede utilizar para establecer una conexión. Entonces puedes mantener un socket. Mi preocupación es el límite del servidor para mantener muchos enchufes activos. Por lo menos, reiniciaría la conexión ocasionalmente o inactivaría clientes inactivos si puedo detectar si el cliente está inactivo. – Brennan

+0

Bueno, altCognito, si Todd Hoff está justo en su blog, entonces la inversión en hardware de $ 100 millones de Facebook del año pasado se encargó de eso. Pero el artículo tiene algunos otros detalles sobre la implementación del servidor. Claramente, un sondeo largo no es algo que desee hacer en IIS en .Net, o cualquier otro servidor web/plataforma de lenguaje dominante, donde cada conexión bloqueada está atando recursos costosos. – cdonner

Cuestiones relacionadas