socket nodejs node example ejemplo con javascript xmpp

javascript - nodejs - websocket js



¿Hay una biblioteca de código abierto WebSockets(JavaScript) XMPP? (6)

¿Alguien ha escrito una biblioteca XMPP de código abierto que usa WebSockets y está diseñada para ser ejecutada por un navegador?


Hay múltiples soluciones (ninguna de ellas es perfecta)

1. Usa Kaazing.

Ellos ya lo apoyan. Es de código abierto, pero tienen algún tipo de licencia dual , por lo que es mejor verificar si puedes usar tu proyecto o no.

2. Combine js.io y APE (Ajax Push Engine)

APE es un framework Comet, pero recientemente comenzaron a admitir Websockets. En su sitio web (sección "APE como proxy"), dicen que puede ejecutar bibliotecas js.io que incluyen xmpp.js, por lo que combinarlas puede funcionar.

3. Utilice Caucho

Es un framework basado en Java similar al APE que proporciona una solución de Comet de ventanilla única, y parecen ser compatibles con XMPP y WebSockets

4. Pídale al equipo de Strophe que admita WebSocket.

Strophe hace XMPP sobre BOSH (flujos bidireccionales sobre HTTP sincrónico), pero también hay una discusión sobre el soporte de WebSockets .

Jack Moffitt (el desarrollador principal y el autor del libro mencionado anteriormente) parece interesado en WebSockets, pero tenemos que ofrecer un razonamiento más sólido sobre por qué necesitan soportar WebSocket sobre BOSH. Si tiene buenas respuestas, únase a la banda de rodadura.

Acabo de probar su xmpp, bosh, strophe echobot ejemplo , que funcionó muy bien. También es posible que desee probarlo para ver si se ajusta a sus necesidades o no.

Para # 2 y # 3, dicen que ambos soportan xmpp y websockets, pero no están seguros de si funcionan juntos.

¿Para qué tipo de aplicación estás pensando usar XMPP y WebSockets?

Los siguientes son sugerencias de alternativas.

  • Si desea la presencia, el chat y la funcionalidad equivalente de la sala de chat, puede crear Wave Gadget o Robot, y luego exponer al exterior mediante la API de Wave Embed (vínculo inactivo, guardado con fines históricos). Wave está construido sobre XMPP.
  • Si simplemente busca una capacidad de mensajería de latencia muy baja, puede probar AMQP .
  • Si está buscando una transmisión de mensajes mucho más simple, puede simplemente insertar / extraer un archivo Unix como lo demostré aquí .

Obtuve la mayor parte de la información anterior cuando escribí esta publicación en el blog . Si revisas la sección de comentarios cada tanto, publicaré la actualización una vez que encuentre otras soluciones.


No estoy seguro de por qué está solicitando específicamente una solución WebSocket porque los servidores XMPP tendrían que respaldar esto primero.

Sin embargo, hay varias bibliotecas XMPP JavaScript disponibles (por lo que veo, todas usan el método BOSH):

Estos ejemplos fueron tomados del sitio web XMPP que enumera las implementaciones de código abierto del protocolo XMPP.


No estoy seguro de que JS en el lado del navegador pueda manejar solo el protocolo de websocket, ya que depende principalmente de la API del navegador. Pocos websocket de soporte de navegador todavía: Chrome, Safari5, tal vez Firefox4. Hay muchas soluciones basadas en flash / as3 (entonces su js se comunica con el código de flash) la principal limitación es que el flash no admite una conexión segura (muy mal).

BWT, puedes verificar esta implementación de websocket, que proporciona una biblioteca de código abierto para el cliente websocket Java y parece tratar con material xmpp y si navegas por los repositorios, puedes encontrar la implementación básica de as3 websocket.


Pronto vendrá un libro que cubre este tema ...

Professional XMPP con JavaScript y jQuery alt text http://ecx.images-amazon.com/images/I/51B7VAHw8OL._SL500_AA240_.jpg

Pero asumo que no quieres esperar por el libro. Así que mira la presentación de Jack Moffitt de JSConf . Lo vi esta mañana. (Jack Moffitt es el autor del libro vinculado anteriormente).

La biblioteca involucrada (implementaciones de JavaScript y C) es Strophe .

Esta es un área de exploración muy fructífera, pero muy cruda. Veremos más pronto. Los WebSockets vienen con HTML5, ¿verdad?


Todavía no tenemos un estándar para XMPP sobre WebSockets que los servidores puedan implementar, que será necesario antes de que el lado del cliente pueda abordarse adecuadamente.

El primer paso es finalizar la estandarización de WebSocket. Parece que esto puede suceder en un grupo de trabajo IETF HyBi, que en el momento de la redacción aún no ha sido aprobado por el IESG. Hubo un HyBi Birds-of-a-Feather (BoF) en la reunión IETF de Hiroshima hace un par de semanas (ver los materiales de la reunión ), que fue bastante bien.

Después de que WebSockets tenga una referencia estable y parezca que se está estableciendo, el XSF creará un XEP que unirá XMPP a WebSockets, presumiblemente con una estrofa por marco WebSocket.

Editar: Jack Moffitt ha escrito un Internet-Draft IETF con una primera pasada en un protocolo que puede usarse. ADVERTENCIA Es probable que esto cambie drásticamente. Solo impleméntalo si estás dispuesto a arrancarlo completamente más tarde. ADVERTENCIA


JSJaC implementa XMPP en Websockets . Se sabe que funciona con varias implementaciones de back-end:

  • node-xmpp-bosh - soporta RFC6455 y funciona sin problemas desde 0.6.1, también usa STARTTLS de forma transparente si es necesario
  • wxg: admite RFC6455 y funciona sin problemas, pero no se puede conectar a servidores que requieren STARTTLS (el wxg original tiene algunos problemas que fueron corregidos por Gordin).
  • ejabberd-websockets - no es compatible con RFC6455, por lo tanto, no funciona, su adaptación al soporte RFC6455 debería ser bastante fácil para cualquiera que conozca Erlang (puede encontrar algunos trabajos en progreso en github)
  • Openfire: el complemento no oficial está disponible, pero carece de soporte para RFC6455 por lo que no funciona
  • Apache Vysper - no es compatible con RFC6455 por lo tanto, no funciona
  • Tigase: no hay trabajo conocido en el soporte de WebSocket
  • MongooseIM - un tenedor de ejabberd con soporte para XMPP sobre Websockets.