Xmpp Vs Websocket [chiuso]


88

Sto per sviluppare un sito web con chat quasi in tempo reale. So che può essere implementato utilizzando i protocolli xmpp o websocket. So anche che il protocollo xmpp è stato sviluppato nel 1999, e credo che dovrebbe essere maturo al giorno d'oggi. D'altra parte, il protocollo websocket è stato sviluppato nel 2011.

  1. Che bisogno c'era di websocket se xmpp fosse bravo a gestire le conversazioni in tempo reale?
  2. Quali sono le principali differenze tra i 2 protocolli?
  3. E quando dovrei sceglierne uno rispetto all'altro?

1
Recentemente mi sono imbattuto nello stesso problema, la mia risposta è stata quella di utilizzare WebSocket. Node.JS sta diventando un linguaggio estremamente popolare e di diritto dovrebbe esserlo. XMPP è ok, tuttavia secondo me ti stai limitando ad andare avanti decidendo di optare per questa vecchia tecnologia. Node è comunque una bestia difficile e devi affrontarlo in modo diverso da come faresti con JavaScript. Se sei abbastanza paziente, ti suggerirei di andare su Node, non solo per questo, ma ti consentirà di espandersi in altre aree con più facilità.
JustSteveKing

7
XMPP è un protocollo Extensible Messaging and Presence, Websocket è un protocollo che fornisce comunicazioni full duplex sulla porta 80. Confronta le mele con le arance.
Flusso

17
@ Flow: potrei paragonare le mele alle arance secondo te. Ma quello che sto chiedendo è quale dovrei scegliere quando sviluppo un sito Web che fornisce funzionalità di chat in tempo reale.
Khafaga

1
@JustSteveKing La maggior parte delle cose sono già state fatte in XMPP, tuttavia devi gestirle in node.js. Ciò equivale a reinventare di nuovo la ruota.
Shahid Karimi

Risposte:


133

La risposta breve è "entrambi".

XMPP è un insieme di protocolli applicativi per fare chat in tempo reale (e molte altre cose, per quella materia) - quindi deve essere trasportato attraverso la rete in qualche modo, quindi è necessario un binding di trasporto. Ci sono tre principali collegamenti di trasporto per XMPP:

  1. TCP / IP, che è quello che si usa solitamente su Internet con client nativi sui dispositivi
  2. HTTP (chiamato BOSH), che è quello che si usa tradizionalmente quando si utilizza XMPP nel browser (poiché TCP-IP non è disponibile per le app Javascript nel browser)
  3. Websocket, che è quello che si usa quando si esegue XMPP in un browser moderno.

Quindi, se stai sviluppando un'applicazione di chat in un browser, sceglierai XMPP come protocollo dell'applicazione e utilizzeresti websocket (in un browser moderno) o BOSH (in un browser più vecchio) come trasporto di rete. Se usi una libreria XMPP per Javascript come Stanza.io ( https://github.com/otalk/stanza.io ), supporterà entrambi e penserai solo a 'XMPP' piuttosto che al livello di trasporto, diverso da quello di installazione quando devi dirgli a quale endpoint connettersi.

(Non puoi usare 'solo websocket' per la chat: puoi usare websocket senza XMPP, ma ciò che questo significa veramente è che stai inventando il tuo protocollo a livello di applicazione per la chat e le probabilità sono che salverai un sacco di tempo e grattacapi sfruttando il lavoro che è già stato fatto per scriverne uno con proprietà utili (sicurezza, identità, estensibilità ecc.) e per il quale ci sono librerie e server esistenti passando invece a XMPP.)


1
Ciao scusa, le domande sono passate un po 'di tempo, mi chiedevo, quindi significa che il trasporto dell'associazione è come socket.io/strophe.js e xmpp è come (openfire / Ejabbered)?
John

1
No, quello che stai nominando ci sono librerie contro server.
Kev

Ulteriori informazioni sui livelli (incluso trasporto, livelli di applicazione): en.wikipedia.org/wiki/OSI_model
Karina Klinkevičiūtė

2
buona risposta da Kev, ma potrebbe valere la pena sottolineare che 1> TCP appartiene al livello 4 - livello di trasporto mentre sia HTTP che Websocket appartengono al livello 7 - livello applicazione.
Gob00st

Indeed @ Gob00st - Anche qui sono confuso. Questa risposta di Kev dice "entrambi" perché "useresti websocket (in un browser moderno) ... come trasporto di rete " . Ma come conciliarlo con il fatto che WebSocket (come XMPP e HTTP) sono in realtà protocolli di applicazione ( non di trasporto) in cioè OSI layer 7? Perché XMPP dovrebbe essere "sopra" WebSocket in un browser moderno?
Amelio Vazquez-Reina
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.