maxpowel / jQuery-XMPP-plugin

Javascript library for the XMMP protocol
http://plugins.jquery.com/project/xmpp-lib
163 stars 50 forks source link

como hago para saber si un usuario se desconecta..? #29

Closed josepaul28 closed 8 years ago

josepaul28 commented 11 years ago

Saludos, quisiera saber como puedo hacer para saber cuando un usuario se desconecta y sacarlo de la lista de conectados ya que actualmente cuando se desconectan en el código de ejemplo que colocaste igual permanecen en la lista.

Buenas noches.

josepaul28 commented 11 years ago

otra cosa, si no es mucha molestia, quiero saber como debo hacer para instalar y configurar mi propio servidor BOSH, yo instale el servidor openfire correctamente pero cuando coloco en el pluguin la url http://localhost:7070 (que es la url del http_bidding) me aparece el error: XMLHttpRequest cannot load http://localhost:7070/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

saludos

maxpowel commented 11 years ago

Usa el evento onDisconnect y ahí metes el código para eliminar el usuario de la lista.

En la documentación se detalla cómo configurar openfire desde 0 https://github.com/maxpowel/jQuery-XMPP-plugin/blob/master/OPENFIRE_SETUP.markdown

josepaul28 commented 11 years ago

muchísimas gracias por tu respuesta, voy a probar a ver y cualquier cosa te pregunto, excelente tu trabajo.. saludos

josepaul28 commented 11 years ago

Buenas noche.

Bien, respecto al openfire, logre configurarlo correctamente, pero solo funciona de forma local, es decir, cuando ingreso con mi usuario clave de facebook me dice que las credenciales son invalidas, pero si se conecta correctamente cuando utilizo el usuario y clave creado en el panel de control de openfire, viendo en la consola de safari pude observar el codigo:

body xmlns='http://jabber.org/protocol/httpbind'><iq xmlns="jabber:client" type="result" id="_session_auth_2" to="josepaul28@macbook-pro-de-paul.local/4f0f299c"/

lo que quiere decir que se esta conectando es al servidor de chat local en macbook-pro-de-paul.local a pesar de que dentro del codigo jquery yo coloque

var jid = $("#jid").val()+"@chat.facebook.com";

De modo que solo introduciendo el usuario se conectara directamente con facebook, ahora cuando cambio el servidor bosh por el que traía originalmente http://bosh.metajack.im:5280/xmpp-httpbind si funciona bien.

No si es es algo que me esta faltando configurar dentro del panel de control de openfire..?

Otro detalle que note es que luego de cierto tiempo conectado (sin importar el servidor bosh) el sistema arroja un error a través de un popup en javascript indicando: Network error y abort (y el internet no se cayo ni tiene problema alguno).

Por ultimo, estuve revisando el evento que me dijiste para detectar cuando un contacto se desconecta y sacarlo de la lista onDisconnect, el ya esta incluido dentro de tu código en basic-chat.html pero veo que funciona es para detectar cuando me desconecto yo y muestra un mensaje disconnected, trate de capturar el evento

.onDisconnect(event){ console.log(event); }

a ver si de esa manera podía ver cuando un usuario se desconectara pero no funciono.. solo me muestra undeffined cuando me desconecto yo mismo..

como hago para que dicho evento responda cada vez que un usuario se desconecte?

Saludos y muchas gracias de antemano.

maxpowel commented 11 years ago

Perdón, me confundí. Tienes que usar el evento onPresence donde se indica si el usuario se ha conectado o no. Sobre lo de la desconexión, de momento especifica un valor alto en el campo inactivity cuando inicies la conexión:

$.xmpp.connect({resource:"MyChat", jid:"user@domain.com", password:"qwerty", inactivity: 600...

La idea es que el servir tenga configurado el máximo tiempo de inactividad con esa cantidad. De esta manera, si pasa ese tiempo y no se recibe respuesta es porque ha sucedido un error en la conexión (está pensado para detectar fallos en la red).

El problema es que si el servidor no está configurado correctamente se provoca ese error. Si no quieres complicarte demasiado, especifica un valor como te he indicado. Tengo en mente mejorarlo para evitar ese problema