PHP Jabber:si yo inicio de sesión y comprobar los mensajes y desconectar, en la que otros usuarios final voy a aparecer como desconectado

StackOverflow https://stackoverflow.com/questions/847854

  •  21-08-2019
  •  | 
  •  

Pregunta

No estoy seguro de si lo que estoy haciendo es absolutamente correcto.Pero aquí va:

  1. Inicios de sesión de usuario en el chat a través de la interfaz basada en web
  2. El usuario es informado de las actualizaciones a través de la Cometa
  3. El usuario ingresa los detalles que ir a un archivo PHP que más se conecta a un servidor Jabber

Ahora el problema es que cuando el usuario quiere enviar un mensaje, es muy sencillo, ejecutar php en el que me puedo conectar a servidor jabber y enviar el mensaje.El problema surge cuando estoy esperando un mensaje.Porque si yo inicio de sesión y comprobar los mensajes y desconectar, en la que otros usuarios final voy a aparecer como desconectado.

Me estoy acercando a este problema en un camino equivocado?Debo conectar directamente al servidor Jabber (a través de javascript) en lugar de PHP de la capa de en medio?Cómo recibir mensajes a través de PHP?

¿Fue útil?

Solución

este es un problema inherente (o característica) con http - no hay conexiones duraderas (no realmente). que necesita una solución, no existe una solución real.

que podría hacerlo con Java o Flash, pero eso no es muy agradable (JavaScript 4tw!).

La otra posibilidad sería la creación de un cliente intermedio lo que se traduce conexiones entre el navegador y el servidor web para conexiones entre el servidor web y el servidor Jabber. desordenado, pero es posible.

o tal vez hay una API que ayuda con esto.

conecta directamente al servidor Jabber a través de JavaScript
i posiblemente durmiendo durante las últimas Ajax-invenciones, pero que yo sepa sólo se puede comunicar con el host el archivo fuente HTML viene de (Greasemonkey ignorando y complementos). no hay dominios diferentes, no hay puertos diferentes, y punto. a menos que vas a enseñar a su servidor Jabber cómo servir a su chatpage-HTML al navegador, esto hará que problemático. Por otra parte, estar conectado ni siquiera funciona, porque eso requeriría de varias copias de las respuestas. los onlysupported por Mozilla, y es por eso que el patito feo COMET siquiera existe en el primer lugar. cometa en sí es una solución para evitar la incapacidad de contener las conexiones durante la transferencia de datos.

Otros consejos

No lo he probado, pero es posible que desee ver en xmpphp . En segundo lugar, es posible que desee considerar mantener al usuario conectado al servidor XMPP (también conocido como un servidor Jabber) durante todo el tiempo, ya que está conectado a su sitio web. Usted probablemente querrá tener un tiempo de espera de algún tipo en caso de que salgan de su sitio web y no regresan.

En cuanto a si debe o no conectar a través de JavaScript, no veo por qué no podría. Yo sugeriría que le vayan a hacer lo que parece el más sencillo para ti. Es posible que desee echa un vistazo a Strophe , lo que he oído cosas buenas sobre, para ese caso.

La única biblioteca XMPP que he utilizado ampliamente, aunque se cabezal , pero que requiere usando pitón y kamaelia .

Así que el problema, como lo que puedo decir, es que cuando el usuario Jabber en el otro extremo responde.El problema, al menos en parte, es que el usuario está respondiendo a otro usuario en el servidor Jabber, sin embargo, desea que el script php para ser consciente de que esta respuesta ha tenido lugar sin mantener la conexión abierta (lo cual tiene sentido ya que el guión no está en ejecución, probablemente).

Una opción, aunque sea un tonto de verdad, es:

  • Tengo un script php que se puede negociar una conexión con el servidor Jabber para envío y recepción para el usuario en su página,

  • Uso de AJAX para enviar mensajes al usuario (el AJAX se apunte a la secuencia de comandos anterior, la secuencia de comandos sería enviar el mensaje.)

  • Tiene un Javascript bucle infinito que marca el mismo guión de siempre de 10 segundos o así, comprobar para ver si hay mensajes.Si la hay, que se pasan de vuelta al cliente y de salida para el usuario.

Sólo hay dos problemas con el anterior:

1) Si el usuario no está conectado cuando el mensaje es transmitido, el script php todavía ver/hacer llegar el mensaje?

2) Un lado del cliente bucle que hace peticiones ajax cada 3 segundos probablemente sería un enorme drenaje.

Solución 2:

OpenFire servidor jabber.Viene con un chat en la web del cliente, construido en, y tiene un addon llamado Fastpath, que es la encargada de manejar HTML basado en los chats en el cliente final (como el de "chat con un agente de ahora!" característica en muchas páginas de soporte.)

Utilizamos esta en el trabajo y es muy personalizable, puede ser integrado con otras secuencias de comandos (por ejemplo, si desea una secuencia de comandos que llena los datos del usuario a partir de su inicio de sesión, o añade algo de avatar personalizado, o lo que sea), y (OpenFire) tiene un montón de otras extensiones y complementos que, si esto no es lo que quieres, probablemente lo que usted está buscando.

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