wiki:jabberit/sem_java

Informações Técnicas sobre o Módulo IM Sem Java - Breve Explicação



IMPORTANTE

Antes de utilizar esta nova implementação do Módulo Expresso Messenger, verifique se o seu Servidor Jabber/XMPP possui implementado a XEP 0124 ( Bidirectional-streams Over Synchronous HTTP ) BOSH.


XMPP em aplicações Web

Enquanto não temos suporte completo aos websockets do HTML5, que seria uma maneira de criar conexões TCP a partir do browser, a alternativa é usar a extensão BOSH do XMPP, que especifica como um cliente deve usar o XMPP via uma conexão HTTP. Vamos olhar com mais detalhe nos componentes envolvidos nesse tipo de conexão no diagrama abaixo, roubado diretamente da especificação da extensão:

Servidor XMPP

|
| [unwrapped data streams]
|

BOSH Connection Manager

|
| [HTTP + <body/> wrapper]
|

Cliente (Browser)

Entre o browser e o BOSH Connection Manager: por meio de long polling ou de qualquer outra técnica Comet, o browser envia requisições HTTP que respeitam a especificação BOSH (o HTTP + <body> wrapper no diagrama acima) para um gerenciador de conexões (BOSH connection manager), cuja responsabilidade é identificar a sessão XMPP e manter as informações dessa sessão.

Entre o BOSH connection manager e o servidor XMPP: o connection manager deve criar e manter uma conexão TCP para cada sessão aberta com o servidor XMPP e é dessa forma que a tradução HTTP para TCP é feita.

Esse BOSH connection manager pode ser tanto um componente da sua infra quanto implementado dentro do próprio servidor XMPP. Você pode encontrar mais informações sobre esses conectores em  http://xmpp.org/tech/bosh.shtml.