Pregunta

Estoy buscando implementar algo similar al chat de Facebook / Gmail. Sé que usan el cometa & Amp; Jabber como su tecnología. Pero estoy confundido acerca de un par de cosas.

  1. ¿Realmente necesito jabber? ¿Puedo usar una tabla mysql simple con from, to, message, sent y recd? ¿Hay alguna ineficiencia en el uso de mysql? ¿Hay alguna pérdida de rendimiento?

  2. ¿Se puede implementar comet usando servidores web normales? ¿Necesito tener algunos servidores especiales? AFAIK, apache + php no puede manejar demasiadas conexiones abiertas? ¿Debo usar encuestas simples, tendrá eso un efecto adverso en mi sistema? ¿Qué puedo usar listo para usar en webhosts comunes? (Porque si vendo la aplicación de chat, debería funcionar para la mayoría de las personas).

  3. ¿Cuál es la mejor manera (actualmente) de implementar el cometa? ¿Es el iframe infinito una buena idea? ¿No se agota el tiempo de espera de PHP después de un tiempo? ¿Será una solución de navegador cruzado o tengo que escribir algunos trucos feos? ¿Eso conducirá a la carga del servidor? ¿Qué usan gmail y facebook para la conexión eterna?

¿Fue útil?

Solución

Grandes preguntas, espero que esto no se pierda en la pila el fin de semana. Si desea usar flash, Kirupa tiene un buen tutorial sobre cómo usar PHP y sockets. En cuanto al cometa, creo que debes tener algún tipo de implementación de servidor. Aquí es donde termina mi débil conocimiento en este momento.

Ejemplo de encuesta simple (jquery + asp.net) http://trappedinhoth.blogspot.com/2009/04/ ajax-jquery-chat-demo.html

Tutorial de Kirupa (tomas php5 + flash 8) http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm

Cliente de chat flash de código abierto (google, mucho más) https://blueimp.net/ajax/

Información del cometa http://cometdaily.com/

Realmente no estoy respondiendo tu pregunta, solo te estoy señalando a más recursos. Tengo mucha curiosidad por saber qué responderán los demás.

Otros consejos

  

¿Realmente necesito jabber? Puedo en cambio   use una tabla mysql simple con from,   a, mensaje, enviado y recd? Hay   ¿Alguna ineficiencia en el uso de MySQL? Es   ¿hay alguna pérdida de rendimiento?

Sí, necesita usar jabber y no mysql. Puede leer [The End of an Architectural Era (It & # 8217; s Time for a Complete Rewrite)] [1] de Stonebraker et al para conocer los detalles de por qué usar un RDBMS no es adecuado.

  

¿Se puede implementar el cometa usando regular   servidores web? ¿Necesito tener algo   servidores especiales? ... ¿Debo usar simple   sondeo, ¿tendrá eso un efecto adverso?   efecto en mi sistema? Que puedo usar   ¿fuera de la caja en webhosts comunes?   ¿Qué usan gmail y facebook para la conexión eterna?

Comet es un término un tanto nebuloso pero no te preocupes. No necesita servidores especiales, no debe usar el sondeo. Puede usar [BOSH] [2], que también es lo que usa Facebook (y sospecho que Gmail).

Utilice [JSJaC] [3] (o [mi bifurcación en Github] [4]) en el lado del cliente y [ejabberd] [5] en el lado del servidor. Ambos admiten [BOSH] [6] (y [XMPP sobre BOSH] [7]), lo que significa que puede hacer conexiones HTTP a su servidor XMPP directamente, evitar sondeos y manejar grandes cargas de tráfico.

Los enlaces para todo esto están marcados en http://delicious.com/petef/stackoverflow-843889

Creo que Jabber puede conceptualizarse de forma segura como un middleware (mamá), donde MySQL es sin duda un backend (tienda persistente). Así que son manzanas y naranjas.

Ninguna de las aplicaciones de mega escala web2.0 puede confiar en RDBMS para la mensajería en tiempo real dados los límites que se encuentran debido a las garantías de ACID de un RDMBS, y sus características de escala. (Piense en particionar sus tablas SQL sobre la marcha para agregar más servidores para tener una idea de uno de los problemas involucrados).

La consideración más importante es la durabilidad de los mensajes en su sistema. ¿Deben persistir para siempre o solo durante un período de tiempo determinado? Dado que es una aplicación de chat, lo más probable es que sea la última. ¿Por qué no utilizar una tienda basada en memoria en lugar de un RDBMS?

¿Por qué deberías usar Jabber? Bueno, es una especie de estándar, por lo que abrirá las posibilidades de interoperabilidad en el futuro, incluso si eso no es un problema en este momento.

Más importante aún, es un sistema que ha estado en desarrollo serio durante mucho tiempo (en años de perros de internet), por lo que es justo asumir que es (a partir de ahora) y seguirá siendo más maduro que lo que sea logre diseñar, implementar, depurar y preparar la producción internamente.

Completamente despistado sobre el cometa, ¡así que no hay comentarios!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top