Pregunta

Me gustaría implementar Chat dentro de una página web. Miré a mi alrededor en la API de Facebook, descubrí que el chat solo está permitido usar XMPP. Primero intenté conectarme a FB-Chat usando Pidgin y funcionó bien. Mi conclusión fue que FB-Chat Server está actuando como el servidor XMPP. ¿Es esto cierto?

Leí sobre XMPP, parece que se debe establecer una conexión TCP abierta entre el cliente y el servidor para intercambiar las estrofas XML que no es posible desde un sitio web (a través de JavaScript y sin complementos) ya que solo las solicitudes/respuestas HTTP pueden ser intercambios, No hay conexión TCP allí. Esto significa que debería haber algún tipo de proxy en el medio, y en cuanto a la autenticación, FB API sugiere usar el SASL de plataforma X-FaceBook (no el Digest MD5, ya que hay un proxy). No encontré un tutorial claro o pasos sobre cómo hacerlo, se agradece la ayuda aquí.

Un poco más de investigación sobre el cliente XMPP de la web o el navegador, vi que se supone que debo usar una biblioteca llamada Estrofa (Residencia en TONTERÍAS protocolo) y en otras respuestas se llamó a algún tipo de administrador de conexión Punjab. Leí sobre este protocolo Bosh, parece ser la solución, pero en algunos lugares descubrí que no está permitido en FB (aunque no estoy seguro de qué tan correcta es esta información). Traté de configurarlos, pero estaba totalmente confundido cómo comenzar y lo que realmente se supone que debo hacer.

Para el Strophe, no encontré un tutorial real sobre cómo implementarla, y en lo que encontré, sugiren que primero configurar un servidor Jabber como Ejabberd (no entendí la necesidad de eso).

Mi pregunta es:

¿Alguien puede sugerir una arquitectura que debería implementar para lograr mi objetivo?

Entonces habrá: página web -> (http) -> strophe -> (tcp) -> fb -chat ¿O tendrá un servidor XMPP en el medio y por qué?

Agradecería cualquier respuesta a cualquiera de mis preguntas. Sugiera algunos enlaces a cómo implementar todas estas cosas. Soy totalmente nuevo en todo esto, lo que me hizo perder durante más de una semana.

Si alguien ya hizo esto, por favor ayuda. Muchas gracias.

Sabah

¿Fue útil?

Solución

También estoy tratando de resolver este problema. Hasta ahora me he decidido por un set de:

Jappix Mini (usa la biblioteca JSJAC.JS) <-> node-xmpp-bosh en node.js en mi servidor de Facebook.

Jappix Mini fue difícil de encontrar, pero parece, con mucho, el mejor bar de chat de código abierto, por lo que vale la pena mencionar aquí.

Todavía no tengo todo configurado, pero se actualizaré aquí si progreso. El problema principal será cómo hacer que JSJAC use la autenticación clave de la API de Facebook. No puedo encontrar ninguna información o ejemplos para eso, pero encontré este complemento para la biblioteca de Strophe que tal vez se pueda adaptar:

https://github.com/rubenjgarciab/turedsocial/blob/master/strophe-plugins/src/facebook.js

Finalmente, no puede incluir su clave secreta de Facebook en JavaScript (¡porque es un secreto!) Por lo tanto, debe usar Facebook REST API Auth.Promotesession Server-Side para producir una clave secreta de sesión que se puede usar en JavaScript para firmar la X -Facebook-Platform Auth Solicitud de Auth.

Espero que eso ayude, agregaré más si/cuando lo haga funcionar.

Otros consejos

Información sobre el servidor de chat de Facebook:

Protocol: XMPP or Jabber
Username: mathvdh
Domain: chat.facebook.com
Jabber ID: mathvdh@chat.facebook.com
Password: <your Facebook password>
Port: 5222
Server: chat.facebook.com
Use SSL/TLS: no
Allow plaintext authentication: no

Creo que Strophe y Punjab deberían ser una combinación de trabajo para el chat FB, ver aquí: Biblioteca XMPP para chat de Facebook

Y creo que el esquema sería más como:

Página web del cliente/js/strophe <-> sugerver/punjab <-> Facebook XMPP Chat Server

Sabah,

Como se mencionó en las respuestas anteriores, las obras de Punjab <-> Strophe.js. He bifurcado al cliente de Strophe de Facebook aquí: https://github.com/javierfigueroa/turedsocial Y agregué un ejemplo.

Espero que esto ayude.

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