it-swarm.com.de

Xmpp Vs Websocket

Ich bin dabei, eine Website zu entwickeln, die nahezu Echtzeit-Chat bietet. Ich weiß, dass es mithilfe von xmpp- oder Websocket-Protokollen implementiert werden kann. Ich weiß auch, dass das xmpp-Protokoll 1999 entwickelt wurde, und ich denke, es sollte heutzutage ausgereift sein. Andererseits wurde das Websocket-Protokoll 2011 entwickelt.

  1. Was war der Bedarf an Websocket, wenn xmpp gut mit Echtzeit-Konversationen umgehen konnte?
  2. Was sind die Hauptunterschiede zwischen den beiden Protokollen?
  3. Und wann soll ich eine der beiden der anderen vorziehen?
59
Khafaga

Die kurze Antwort lautet "beides".

XMPP ist eine Reihe von Anwendungsprotokollen für Echtzeit-Chats (und viele andere Dinge). Sie müssen dann irgendwie über das Netzwerk transportiert werden, sodass Sie eine Transportbindung benötigen. Es gibt drei Haupttransportbindungen für XMPP:

  1. TCP/IP, das ist, was man normalerweise im Internet mit nativen Clients auf Geräten verwendet
  2. HTTP (BOSH genannt), wie es traditionell bei der Verwendung von XMPP im Browser verwendet wird (da für Javascript-Apps im Browser kein TCP-IP verfügbar ist)
  3. Websockets, die verwendet werden, wenn XMPP in einem modernen Browser ausgeführt wird.

Wenn Sie also eine Chat-Anwendung in einem Browser entwickeln, wählen Sie XMPP als Anwendungsprotokoll und verwenden Websockets (in einem modernen Browser) oder BOSH (in einem älteren Browser) als Netzwerktransport. Wenn Sie eine XMPP-Bibliothek für Javascript wie Stanza.io ( https://github.com/otalk/stanza.io ) verwenden, wird beides unterstützt, und Sie werden nur über XMPP nachdenken 'anstatt der Transportschicht, außer beim Setup, wenn Sie ihm mitteilen müssen, zu welchem ​​Endpunkt eine Verbindung hergestellt werden soll.

(Sie können nicht "nur Websockets" für den Chat verwenden - Sie können Websockets ohne XMPP verwenden. Dies bedeutet jedoch, dass Sie Ihr eigenes Protokoll auf Anwendungsebene für den Chat erfinden und die Chancen stehen gut, dass Sie sparen viel Zeit und Kopfzerbrechen, indem Sie die Arbeit nutzen, die bereits in das Schreiben eines Dokuments mit nützlichen Eigenschaften (Sicherheit, Identität, Erweiterbarkeit usw.) investiert wurde und für die es bereits Bibliotheken und Server gibt, indem Sie stattdessen auf XMPP umsteigen.)

103
Kev

Grundsätzlich vergleichen Sie zwei verschiedene Dinge miteinander. XMPP ist ein Anwendungsprotokoll, während WebSockets ein Transportprotokoll ist.

Ich denke, mit XMPP sparen Sie viel Zeit. Sie verlieren jedoch die Freiheit, Funktionalitäten so zu implementieren, wie es Ihnen am besten passt. Wenn Ihre Anwendung nur Eins-zu-Eins-Messaging- und Freundeslistenfunktionen ohne klaren Plan für das, was Sie in Zukunft hinzufügen würden, verwendet, wäre WebSockets + eine praktikable Lösung. Wenn Ihre Anwendung jedoch von anderen XMPP-Erweiterungen wie Multi-Party-Messaging und Peer-to-Peer-Mediensitzungen profitiert, ist es besser, XMPP zu verwenden, da für die Implementierung solcher Funktionen viel Zeit erforderlich ist.

10
Kumait