Xmpp gegen Websocket [closed]

Lesezeit: 4 Minuten

Ich bin dabei, eine Website zu entwickeln, die nahezu in Echtzeit chatten kann. Ich weiß, dass es mit Xmpp- oder Websocket-Protokollen implementiert werden kann. Ich weiß auch, dass das xmpp-Protokoll 1999 entwickelt wurde und meiner Meinung nach heutzutage ausgereift sein sollte. Andererseits wurde das Websocket-Protokoll 2011 entwickelt.

  1. Was war die Notwendigkeit für Websocket, wenn xmpp gut in der Handhabung von Echtzeitgesprächen war?
  2. Was sind die Hauptunterschiede zwischen den beiden Protokollen?
  3. Und wann sollte ich einen von ihnen dem anderen vorziehen?

  • Ich bin kürzlich über dasselbe Problem gestolpert, meine Antwort war, mich für WebSockets zu entscheiden. Node.JS entwickelt sich zu einer äußerst beliebten Sprache, und das sollte es auch sein. XMPP ist ok – aber meiner Meinung nach schränken Sie sich selbst ein, wenn Sie sich für diese ältere Technologie entscheiden. Node ist jedoch ein kniffliges Tier und Sie müssen es anders angehen als JavaScript. Wenn Sie geduldig genug sind, würde ich vorschlagen, zu Node zu gehen – nicht nur dafür, sondern es wird Ihnen auch ermöglichen, in anderen Bereichen einfacher zu expandieren.

    – JustSteveKing

    24. Oktober 2014 um 13:43 Uhr

  • XMPP ist ein Extensible Messaging and Presence Protocol, Websocket ist ein Protokoll, das Vollduplex-Kommunikation über Port 80 bereitstellt. Sie vergleichen Äpfel mit Orangen.

    – Fließen

    24. Oktober 2014 um 14:34 Uhr

  • @Flow: Deiner Meinung nach vergleiche ich vielleicht Äpfel mit Birnen. Aber was ich frage, ist, was ich wählen sollte, wenn ich eine Website entwickle, die eine Echtzeit-Chat-Funktion bietet.

    – Khafaga

    25. Oktober 2014 um 0:00 Uhr


  • @JustSteveKing Die meisten Dinge sind bereits in XMPP erledigt, aber Sie müssen diese Dinge in node.js verwalten. Das ist gleichbedeutend damit, das Rad wieder neu zu erfinden.

    – Shahid Karimi

    30. Juli 2015 um 9:16 Uhr

Die kurze Antwort lautet „beides“.

XMPP ist ein Satz von Anwendungsprotokollen für Echtzeit-Chats (und viele andere Dinge) – es muss dann irgendwie über das Netzwerk transportiert werden, daher benötigen Sie eine Transportbindung. Es gibt drei Haupttransportbindungen für XMPP –

  1. TCP/IP, was man normalerweise im Internet mit nativen Clients auf Geräten verwendet
  2. HTTP (genannt BOSH), was traditionell verwendet wird, wenn XMPP im Browser verwendet wird (da TCP-IP für Javascript-Apps im Browser nicht verfügbar ist)
  3. Websockets, die man verwendet, wenn man XMPP in einem modernen Browser macht.

Wenn Sie also eine Chat-Anwendung in einem Browser entwickeln, würden Sie XMPP als Anwendungsprotokoll wählen und Websockets (in einem modernen Browser) oder BOSH (in einem älteren Browser) als Netzwerktransport verwenden. Wenn Sie eine XMPP-Bibliothek für Javascript wie Stanza.io (https://github.com/otalk/stanza.io), wird es beides unterstützen und Sie werden nur an „XMPP“ und nicht an die Transportschicht denken, außer bei der Einrichtung, wenn Sie ihm mitteilen müssen, mit welchem ​​​​Endpunkt es sich verbinden soll.

(Sie können nicht „nur Websockets“ für den Chat verwenden – Sie können Websockets ohne XMPP verwenden, aber was das wirklich bedeutet, ist, dass Sie Ihr eigenes Anwendungsschichtprotokoll für den Chat erfinden, und die Chancen stehen gut, dass Sie sparen werden viel Zeit und Kopfschmerzen, indem Sie die Arbeit nutzen, die bereits in das Schreiben eines mit nützlichen Eigenschaften (Sicherheit, Identität, Erweiterbarkeit usw.) investiert wurde und für die es vorhandene Bibliotheken und Server gibt, indem Sie stattdessen auf XMPP umsteigen.)

  • Hallo, Entschuldigung, die Fragen sind schon eine Weile her, ich frage mich nur, bedeutet das, dass der Transport der Bindung wie socket.io/strophe.js ist und der xmpp wie (openfire/Ejabbered) ist?

    – John

    20. August 2015 um 6:09 Uhr

  • Nein, was Sie dort nennen, sind Bibliotheken im Vergleich zu Servern.

    – Kev

    22. Juli 2016 um 10:39 Uhr

  • Hier ist mehr über Schichten (inkl. Transport-, Anwendungsschichten): en.wikipedia.org/wiki/OSI_model

    – Karina Klinkevičiūtė

    17. August 2016 um 10:58 Uhr

  • gute Antwort von Kev, aber es kann erwähnenswert sein, dass 1> TCP zur Schicht 4 gehört – Transportschicht, während sowohl HTTP als auch Websocket zur Schicht 7 – Anwendungsschicht gehören.

    – RoundPi

    1. Mai 2020 um 9:31 Uhr

  • Sie verwenden Websockets nicht zusätzlich zu XMPP, Sie verwenden XMPP zusätzlich zu Websockets. Websockets mögen ein Anwendungsschichtprotokoll im OSI-Modell sein, aber das ist nicht besonders hilfreich, wenn es darum geht, Websockets mit weiteren Protokollen zu überlagern. Es ist viel einfacher, sich Websockets als Netzwerktransport für XMPP vorzustellen, wenn man sie mit XMPP verwendet.

    – Kev

    22. Januar 2021 um 17:41 Uhr


1312190cookie-checkXmpp gegen Websocket [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy