2010-03-13 7 views

Respuesta

14

Por ahora, sondeo largo es probablemente la mejor solución. Muchos sitios de renombre tienen implementaciones de sondeo largas, como Facebook, Google y eBay. No todos tienen Flash instalado/habilitado en sus navegadores. En el futuro, Web Sockets podría hacer un trabajo más fácil para nosotros.

Actualización: Al escribir esto, el WebSocket API se implementa en el último WebKit (Chrome/Safari) y Firefox 4 beta. También hay una compilación instantánea pública de Opera available for download con una implementación de la API. Esto significa que la prueba de API está ampliamente disponible. Para obtener más información, consulte this answer.

+0

1 me gusta mucho de votación. El futuro podría ser diferente, pero yo no iría con Flash. – Plynx

+0

He usado phpfreechat (que usa polling largo) y con solo 20 personas es muy muy lento !! Por qué ? ¡Necesito crear una aplicación en tiempo real para millones de personas simultáneamente! – xRobot

+2

@xRobot: ¿Has consultado las preguntas frecuentes? [http://www.phpfreechat.net/faq] Ofrece una solución para un problema de rendimiento relacionado con el acceso al disco. Aparte de eso, necesita un servidor de gran potencia para manejar millones de conexiones al mismo tiempo. Las solicitudes http normales están abiertas-> obtener datos-> cerrar, por lo que las conexiones simultáneas son menos. Con un sondeo largo está abierto-> esperar datos-> cerrar, muchos simultáneos están casi garantizados. Los servidores solo pueden manejar una cantidad limitada de conexiones concurrentes, y obtienes lo que pagas, ¡si entiendes mi deriva! –

1

No creo que la encuesta larga sea la forma más eficiente de hacer Comet. De todos modos, envía una nueva solicitud HTTP después de obtener la respuesta. Cuesta más solicitudes HTTP adicionales que la transmisión HTTP.

Pero, a largo de votación podría ser más fiable y más fácil de aplicar que la transmisión HTTP. De acuerdo con este article in Google Code, la transmisión HTTP puede no ser funcional si el proxy HTTP intermedio almacena el contenido.

Es interesante que Gmail no utiliza largo de votación. Con la ayuda de Http sniffer, está claro que usa la transmisión HTTP para Comet.

+0

¿También Facebook no usa encuestas largas? ¿Conoces algún ejemplo de transmisión http? Thans^_^ – xRobot

+0

No lo he probado personalmente, pero me dicen que el chat de Facebook se implementa mediante encuestas largas. GMail es Http Streaming. También lo es Outlook Web Access. –

+0

@xRobot, si está esperando cómo hacerlo, esta URL es un buen resumen: http://cometdaily.com/2007/12/11/the-future-of-comet-part-1-comet-today/ –

4

Todos los diferentes métodos tienen diferentes pros y contras, no soy especialista en las diferencias, es por eso que lo recomendaré a evite hacer la elección, evite el desarrollo y ajuste que involucra cada enfoque, evite los futuros cambios en las tecnologías disponibles (es decir, como HTML 5 Web sockets llegada.), utilizando una biblioteca que abstrae el método de transporte utilizado, y elige el mejor enfoque basado en las capacidades del cliente:

http://socket.io/

esta maravillosa biblioteca hace que la creación de aplicaciones en tiempo real sea increíblemente implementar! y hay varias implementaciones de servidor: Python (Tornado), Java, Google GO, rack (Rubí), además de la aplicación de corriente en Node.js (JavaScript del lado servidor)

+0

¡Sí! Ya lo usé con Java y NodeJS. su herramienta brillante Para java podemos usar la implementación del servidor netty. – agpt

Cuestiones relacionadas