2009-05-03 9 views
7

¿Es posible dejar que el servidor web envíe un mensaje al navegador web sin Comet?Reverso Ajax sin cometa?

Todas las principales compañías web como Facebook y Google utilizan Comet para este fin y parece un feo truco que espera desaparecer si las conexiones tcp se activaron para los principales navegadores.

Respuesta

5

¿Es posible hacer que el servidor web enviar un mensaje al navegador web sin Comet?

Sí, es posible a través de Applets Silverlight, Flex, Flash y Java.

Cada compañía de web más importantes como Facebook y Google utiliza Comet para este fin y apenas se parece como un truco feo esperando a desaparecer Si TCP conexiones se han habilitado para los principales navegadores .

Conexiones TCP a HTML 5 Web Sockets no resolverá el problema. Verá a mucha gente usar Google y Facebook desde su lugar de trabajo, universidad o escuela y los firewalls a menudo bloquean los puertos no estándar y el tráfico que no es HTTP. Por lo tanto, una solución que envía mensajes a un navegador web debe funcionar a través de HTTP y, a menudo, se ve como HTTP. Es por eso que Google y Facebook usan Comet y continuarán haciéndolo, de lo contrario no podrán alcanzar a un gran porcentaje de sus usuarios. De hecho, algunos cortafuegos y proxies inversos cerrarán las conexiones HTTP de larga ejecución y, por lo tanto, una conexión de sondeo Ajax se suele utilizar como alternativa. Puedo sugerir algo como StreamHub Reverse Ajax si está buscando un servidor que sea capaz de enviar mensajes al navegador a través de Ajax Inverso.

+1

Ver: http://stackoverflow.com/questions/1227266/how-do-i-open-a-connection-back-to-the-server-using-flex – DLauer

+0

Y http://stackoverflow.com/ preguntas/1225147/cómo-hacer-abrir-a-tcp-socket-from-silverlight – DLauer

2

¿Por qué crees que Facebook y Google lo harían si hubiera otra manera?

Bien, bien, hay otras formas. Puede insertar un applet de Java en la página. Si el applet de Java está firmado y el usuario lo autoriza, podría abrir una conexión de larga ejecución para que el servidor le envíe eventos. Pero eso le proporcionaría algo que era más frágil, requería más interacción del usuario, era más lento para iniciarse y funcionaría en menos plataformas que Comet.

Se ha debatido la posibilidad de agregar server-sent events y web sockets a HTML5, pero eso es extremadamente preliminar y probablemente no llegue al estándar.

2

Como "Comet" es un término artificial para todo lo que utiliza el protocolo http existente para simular una carga de datos, me temo que no hay nada que puedas hacer.

La única solución sería una "mejora" del protocolo actual o alguna solución ampliamente utilizada probablemente basada en un plugin ... puede usar Java para eso. Pero esto generará otros problemas porque, básicamente, debe tener disponible la conexión entrante en ese navegador.

2

Comet se puede implementar como una simple llamada ajax de larga duración, por lo que se trata de una cuestión de semántica. Here, for example, is a jquery plugin que implementa Comet utilizando el protocolo de Bayeux encima de la llamada ajax de jQuery.

Cuestiones relacionadas