2012-06-14 35 views
8

Estoy buscando desarrollar un sitio web que tenga un servicio de chat entre el visitante de un sitio web y el administrador del sitio web.¿Cómo desarrollar una instalación de chat basada en web XMPP usando PHP y JQuery?

Sé que la mejor manera de hacer esto sería utilizando XMPP, sin embargo, no tengo experiencia en usarlo. Estoy buscando implementar esto usando PHP.

He descargado XMPPHP y edité un ejemplo para enviar un mensaje a mi cliente de Google Chat en GMail, pero cuando respondo Google me dice que el otro extremo no recibió el mensaje.

Hasta ahora, el tutorial más informativo es http://www.ibm.com/developerworks/xml/tutorials/x-realtimeXMPPtut/ pero no entiendo por qué tengo que instalar 'Openfire' ni quiero construir el sitio web en mi máquina local.

¿Alguien puede decirme qué necesito (y más importante aún, por qué) para configurar este proyecto para que pueda comenzar a construir el código para ello?

+0

¿Tiene que ser PHP? ¿Tiene que ser XMPP? – Sixty4Bit

+0

@ Sixty4Bit, perdón por el retraso en responderle. Tiene que ser PHP, no * tiene que ser * XMPP – P3tro

+1

¿Por qué no probar mibew? Eso está en PHP y funciona bien. – Tanmay

Respuesta

8

A juzgar por los comentarios a otras respuestas que voy a decir por qué, y un poco de qué, pero no le dan una solución porque veo un montón de soluciones en la barra lateral "Relacionada". Tendrá que elegir la correcta y al conocer "el por qué" podrá tomar una decisión informada.

Para que el chat se sienta bien, tiene que haber algo de inmediato en las respuestas. Un retraso de un segundo en el tiempo será notable para los usuarios a lo largo del tiempo y dará una sensación de falta de sentido. Para que las respuestas inmediatas o en "tiempo real" funcionen en un navegador, se requiere una conexión constante para que, cuando entre nueva información, se muestre inmediatamente.

Las conexiones persistentes en los navegadores son difíciles debido a las especificaciones de solicitud/respuesta de HTTP. Existen especificaciones en el trabajo para traer conexiones persistentes a los navegadores, pero esos navegadores no son ubicuos. En el futuro, las conexiones persistentes serán suministradas por WebSockets y SPDY, las cuales están disponibles en las últimas versiones de Chrome, Safari y Firefox con IE un poco rezagado.

Otra opción para las conexiones persistentes es XMPP. XMPP es el protocolo utilizado para el cliente de chat Jabber. Como se trata de una implementación de código abierto, se ha adaptado a muchos otros usos. Existen bibliotecas JavaScript que le permiten conectar un navegador a un socket XMPP y escuchar nuevos mensajes. El método que he visto en el pasado es enviar los mensajes al servidor web, y luego hacer que el servidor web le informe al servidor XMPP sobre el nuevo mensaje que luego transmite el nuevo mensaje a todos los usuarios. Sin embargo, esto requiere un servidor XMPP que aumenta la complejidad del sistema.

La mayoría de los usuarios no están al borde de la fuga en las versiones de los navegadores, por lo que tendrá que ser capaz de manejar navegadores más antiguos. La mayoría de las alternativas implican abrir una conexión de larga ejecución al servidor que responde cada vez que llegan nuevos datos.Aquí está una lista de métodos para la simulación de una conexión persistente en los navegadores antiguos:

  • Adobe Flash zócalo
  • ActiveX htmlfile (IE)
  • Eventos enviados por el servidor (Opera)
  • XHR con la codificación de varias partes
  • XHR con largo de votación

Estos métodos más antiguos, y WebSockets, son apoyados por una biblioteca llamada Juggernaut.

ACTUALIZACIÓNJuggernaut has been deprecated by the maintainer, por una buena razón: los navegadores modernos soportan conexiones persistentes fuera de la caja (con la excepción de IE, por supuesto) a través de una especificación llamados eventos enviados por el servidor (SSE). La compatibilidad con versiones anteriores ahora es manejada por polyfills (What is a polyfill?) y como las notas de publicación de desaprobación, hay algunas buenas para llevar el SSE a los navegadores heredados.

+1

Una excelente respuesta e introducción para solucionar el problema. Elegido como respuesta. – P3tro

0
+0

Hola. Agradezco su respuesta, pero no responde mi pregunta. Ya busqué en Google algunos tutoriales y lo que encontré no se ajustaba a mis necesidades o simplemente eran soluciones "listas para usar", lo que no es ideal. Quiero ser capaz de compilar esta aplicación, pero no entiendo los conceptos básicos para los que solicito ayuda. – P3tro

+0

@IjazAhmedBhatti Creo que eres grosero y tu comentario no agrega nada a esta discusión o sitio web. – peacemaker

0

Se supone que las aplicaciones de mensajería instantánea son en tiempo real. Un sitio web funciona con protocolo HTTP que usa el método de solicitud/respuesta. Una forma de hacerlo es POLLING. enviar una solicitud de nuevos mensajes pendientes para el usuario al servidor. El servidor debería ser capaz de diferenciar entre los mensajes que se han enviado y los que aún no se han entregado. este método se llama Sondeo. Su navegador constantemente le pide al servidor que envíe cualquier mensaje pendiente. Pero esto puede desperdiciar ancho de banda y también drenar la batería (en caso de que se acceda al sitio web usando un teléfono inteligente). La mejor opción es seguir usando el servidor XMPP.

Cuestiones relacionadas