| 2 | |
| 3 | |
| 4 | == ''' XMPP em aplicações Web ''' == |
| 5 | |
| 6 | 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: |
| 7 | |
| 8 | Servidor XMPP |
| 9 | | |
| 10 | | [unwrapped data streams] |
| 11 | | |
| 12 | BOSH Connection Manager |
| 13 | | |
| 14 | | [HTTP + <body/> wrapper] |
| 15 | | |
| 16 | Cliente (Browser) |
| 17 | |
| 18 | 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. |
| 19 | 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. |
| 20 | |
| 21 | 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. |
| 22 | |