Estou prestes a desenvolver um site que tem bate-papo quase em tempo real. Eu sei que ele pode ser implementado usando protocolos xmpp ou websocket. Sei também que o protocolo xmpp foi desenvolvido em 1999, e acho que deve estar maduro hoje em dia. Por outro lado, o protocolo websocket foi desenvolvido em 2011.
- Qual era a necessidade do websocket se o xmpp era bom para lidar com conversas em tempo real?
- Quais são as principais diferenças entre os 2 protocolos?
- E quando devo escolher um deles em vez do outro?
Respostas:
A resposta curta é 'ambos'.
O XMPP é um conjunto de protocolo de aplicativo para fazer bate-papo em tempo real (e muitas outras coisas, por falar nisso) - ele precisa ser transportado pela rede de alguma forma, então você precisa de uma ligação de transporte. Existem três ligações de transporte principais para XMPP -
Portanto, se estiver desenvolvendo um aplicativo de chat em um navegador, você escolherá XMPP como o protocolo do aplicativo e usará websockets (em um navegador moderno) ou BOSH (em um navegador mais antigo) como o transporte de rede. Se você usar uma biblioteca XMPP para Javascript como Stanza.io ( https://github.com/otalk/stanza.io ), ela suportará ambos e você só estará pensando em 'XMPP' em vez da camada de transporte, diferente da configuração, quando você precisa dizer a qual ponto de extremidade conectar.
(Você não pode usar 'apenas websockets' para bate-papo - você pode usar websockets sem XMPP, mas o que isso realmente significa é que você está inventando seu próprio protocolo de camada de aplicativo para bate-papo, e provavelmente você vai economizar muito tempo e dores de cabeça, aproveitando o trabalho que já foi feito para escrever um com propriedades úteis (segurança, identidade, extensibilidade etc.) e para o qual existem bibliotecas e servidores, optando pelo XMPP.)
fonte