Xmpp Vs Websocket [fermé]

88

Je suis sur le point de développer un site Web proposant un chat en temps quasi réel. Je sais qu'il peut être implémenté en utilisant les protocoles xmpp ou websocket. Je sais aussi que le protocole xmpp a été développé en 1999, et je suppose qu'il devrait être mûr de nos jours. Par contre, le protocole websocket a été développé en 2011.

  1. Quel était le besoin de websocket si xmpp était efficace pour gérer les conversations en temps réel?
  2. Quelles sont les principales différences entre les 2 protocoles?
  3. Et quand devrais-je choisir l'un d'eux plutôt que l'autre?
Khafaga
la source
1
Je suis récemment tombé sur le même problème, ma réponse a été d'opter pour les WebSockets. Node.JS est en train de devenir un langage extrêmement populaire, et il devrait l'être. XMPP est ok - mais à mon avis, vous vous limitez à aller de l'avant en décidant d'opter pour cette technologie plus ancienne. Node est cependant une bête délicate et vous devez l'aborder différemment de la façon dont vous le feriez avec JavaScript. Si vous êtes assez patient, je suggérerais d'aller à Node - pas seulement pour cela, mais cela vous permettra de vous développer plus facilement dans d'autres domaines.
JustSteveKing
7
XMPP est un protocole de messagerie et de présence extensible, Websocket est un protocole qui fournit des communications en duplex intégral sur le port 80. Vous comparez les pommes aux oranges.
Débit
16
@Flow: Je compare peut-être des pommes à des oranges à votre avis. Mais ce que je demande, c'est ce que je dois choisir lors du développement d'un site Web offrant une capacité de chat en temps réel.
Khafaga
1
@JustSteveKing La plupart des choses sont déjà effectuées dans XMPP, mais vous devez gérer ces choses dans node.js. Cela équivaut à réinventer à nouveau la roue.
Shahid Karimi

Réponses:

133

La réponse courte est «les deux».

XMPP est un ensemble de protocoles d'application pour le chat en temps réel (et bien d'autres choses d'ailleurs) - il doit ensuite être transporté sur le réseau d'une manière ou d'une autre, vous avez donc besoin d'une liaison de transport. Il existe trois principales liaisons de transport pour XMPP -

  1. TCP / IP, qui est ce que l'on utilise généralement sur Internet avec des clients natifs sur les appareils
  2. HTTP (appelé BOSH), qui est ce que l'on a traditionnellement utilisé lors de l'utilisation de XMPP dans le navigateur (car TCP-IP n'est pas disponible pour les applications Javascript dans le navigateur)
  3. Websockets, qui est celui que l'on utilise pour faire XMPP dans un navigateur moderne.

Donc, si vous développez une application de chat dans un navigateur, vous choisiriez XMPP comme protocole d'application et vous utiliseriez des websockets (dans un navigateur moderne) ou BOSH (dans un navigateur plus ancien) comme transport réseau. Si vous utilisez une bibliothèque XMPP pour Javascript comme Stanza.io ( https://github.com/otalk/stanza.io ), elle prendra en charge les deux et vous ne penserez qu'à 'XMPP' plutôt qu'à la couche de transport, autre que lors de la configuration lorsque vous devez lui indiquer à quel point de terminaison se connecter.

(Vous ne pouvez pas utiliser `` juste des websockets '' pour le chat - vous pouvez utiliser des websockets sans XMPP, mais ce que cela signifie vraiment, c'est que vous inventez votre propre protocole de couche application pour le chat, et les chances sont que vous allez économiser beaucoup de temps et de maux de tête en profitant du travail qui a déjà été fait pour en écrire un avec des propriétés utiles (sécurité, identité, extensibilité, etc.) et pour lequel il existe des bibliothèques et des serveurs existants en passant à XMPP à la place.)

Kev
la source
1
Salut désolé, les questions ont été un certain temps, je me demande juste, cela signifie-t-il que le transport de la liaison est comme socket.io/strophe.js, et le xmpp est comme (openfire / Ejabbered)?
John
1
Non, ce que vous nommez il y a des bibliothèques par rapport aux serveurs.
Kev
Pour en savoir plus sur les couches (y compris le transport, les couches d'application): en.wikipedia.org/wiki/OSI_model
Karina Klinkevičiūtė
2
bonne réponse de Kev mais il peut être utile de souligner 1> TCP appartient à la couche 4 - couche de transport tandis que HTTP et Websocket appartiennent à la couche 7 - couche application.
Gob00
En effet @ Gob00st - Je suis également confus ici. Cette réponse de Kev dit "les deux" parce que "vous utiliseriez des websockets (dans un navigateur moderne) ... comme transport réseau " . Mais comment concilier cela avec le fait que WebSocket (comme XMPP et HTTP) sont en fait des protocoles d' application (et non de transport) dans la couche 7 OSI? Pourquoi XMPP irait-il «au-dessus» des WebSockets dans un navigateur moderne?
Amelio Vazquez-Reina le