XMPP (Extensible Messaging and Presence Protocol) é um protocolo aberto para comunicação em tempo real usando XML, originalmente desenvolvido como alternativa aos sistemas de mensagens instantâneas proprietários. O documento descreve a história, arquitetura e aplicações do XMPP, incluindo seu uso em serviços como Google Talk e Facebook Chat.
2. XMPP (Extensible Messaging and Presence Protocol)
● "É uma tecnologia aberta para comunicação em tempo real
utilizando XML como formato básico para troca de
informações. Em essência, XMPP fornece uma maneira de
mandar pequenos pedaços de XML de uma entidade para
outra." (XMPP: The Definitive Guide, 2009)
3. Web em tempo real
● HTTP?
○ Não escala bem para atualizações frequentes
○ Não escala bem para polling frequente
○ Unidirecional
○ Faz a pergunta errada: "O que aconteceu no passado?"
● Possibilidade: usar WebSockets, ou XMPP
4. Protocolos fechados de comunicação instantânea
● ICQ (1996), AOL IM (1997), Yahoo! Messenger (1998),
MSN (1999)
● Desvantagens
○ Só se conversa com usuários do mesmo sistema
○ Servidor centralizado de responsabilidade do provedor do
serviço
○ Não se pode escolher o software cliente (a não ser que seja
feita engenharia reversa)
5. O surgimento do XMPP
● Jeremie Miller (1999)
○ "A couple of friends were playing around with a little Perl script
that would send messages back and forth between ICQ and
AIM - two clients could connect to it and it would rewrite
messages. So I thought, 'Well heck, it isn't that hard to write an
instant messaging system'"
6. História do XMPP
● 1999: Liberação do primeiro servidor por Jeremie
● 2000: Desenvolvimento dos primeiros clientes open source e
bibliotecas pela recém-formada comunidade Jabber
● 2000: 1º serviço IM baseado em XMPP (Jabber.org)
● 2001: Criação da Jabber Software Foundation
● 2004: Formalização do XMPP pelo IETF
● 2005: É lançado o sistema de IM e VoIP Google Talk, baseado no
XMPP
● 2008: Lançado o Facebook Chat
7. Serviços
● Channel encryption
● Autenticação
● Presença
● Listas de contato
● Messaging um-para-um e muitos-para-muitos
● Sessões de interação em tempo real peer-to-peer
● ...
9. Aplicações
● Data syndication (como é feito com RSS e Atom feeds)
● VoIP
● Serviços de identificação (por exemplo com OpenID, ou OAuth)
(...)
● [Use a sua imaginação!]
14. <message/>
● Método push básico para transferir informação,
transporte "fire-and-forget"
<message from="madhatter@wonderland.lit/teaparty"
to="alice@wonderland.lit" type="chat">
<body>Who are you?</body>
<subject>Query</subject>
</message>
15. <presence/>
● Anuncia a disponibilidade de entidades na rede
<presence from="alice@wonderland.lit/pda">
<show>xa</show> <status>down the rabbit
hole!</status> </presence>
16. <iq/>
● Usado no lugar de <message/> quando se quer
garantir a entrega de informação ou obter uma
resposta
20. Pontos fortes
● Descentralizado: qualquer um pode rodar um servidor
XMPP
● Padrão aberto
● Histórico: usado desde 1998, já tem muitas
implementações de clientes, servidores, componentes,
bibliotecas e suporte de empresas como Sun e Google
● Segurança: pode rodar em redes privadas; suporte para
SASL e TLS na especificação; pode usar certificados
digitais
● Flexibilidade e extensibilidade: permite adicionar
funcionalidade através de XEPs
21. Pontos fracos
● Pode não funcionar adequadamente quando o
tamanho das mensagens é muito grande
● Transmissão de dados binários. Solução:
transmissão fora de banda, usando mensagens para
coordenação
22. Referências
● Use XMPP to Create Your Own Google Talk Client.
Sarath Lakshman. Revista Linux For You, Maio 2010.
● XMPP: The Definitive Guide. Peter Saint-Andre,
Kevin Smith, Remko Tronçon. O’Reilly, 2009.
● Wikipedia: Extensible Messaging and Presence
Protocol