WhatsApp usa la presa
Comprensione dell’architettura e del design del sistema di Whatsapp
Riepilogo
La crittografia end-to-end di WhatsApp potrebbe non essere la protezione della privacy come si spera, nonostante la sua sicurezza teorica. Questo articolo esplora l’architettura e la progettazione del sistema di WhatsApp, facendo luce sui suoi meccanismi interni.
Punti chiave
1. roxdavirox/socket-whatsapp: Questo commit non appartiene a nessun ramo in questo repository e può provenire da una forchetta al di fuori del repository.
2. Nome già in uso: Creare una filiale con un nome che esiste già come tag può portare a un comportamento inaspettato. All’utente viene richiesto di confermare la creazione della filiale.
3. Avvio del desktop GitHub: Se non succede nulla, si consiglia all’utente di scaricare Github Desktop e riprovare.
4. Avvio di Xcode: Se non succede nulla, si consiglia all’utente di scaricare Xcode e riprovare.
5. Avvio del codice Visual Studio: L’utente è informato che il loro Codespace si aprirà una volta che sarà pronto. Se c’è stato un problema a preparare il CodSpace, sono incoraggiati a riprovare.
6. Ultimo commit: Vengono visualizzati i dettagli dell’ultimo commit fatto nel repository.
7. Statistiche Git: Viene fornita una panoramica delle statistiche GIT per il repository.
8. File: Vengono visualizzate le informazioni sui file nel repository, incluso un mancato caricamento delle ultime informazioni di commit.
9. Readme.MD: Una breve descrizione della libreria Baileys, che è un nodo puro.JS Implementazione dell’API Web WhatsApp senza la necessità di selenio o qualsiasi altro browser. Utilizza WebSocket direttamente per interfacciarsi con WhatsApp Web.
10. Uso di Baileys: Vengono fornite istruzioni su come installare baileys da npm e importarlo nel codice.
Domande e risposte:
1. Qual è lo scopo del commit roxdavirox/socket-whatsapp?
Lo scopo di questo commit non è chiaro in quanto non appartiene a nessun ramo nel repository e può provenire da una forchetta al di fuori del repository.
2. Quale potenziale problema può sorgere quando si crea una filiale con un nome che esiste già come tag?
Creazione di una filiale con un nome che esiste già come tag può causare un comportamento inaspettato. È consigliabile confermare prima di creare tale filiale.
3. Cosa dovrebbe essere fatto se non succede nulla quando si lancia il desktop Github?
Se non succede nulla quando si lancia il desktop Github, si consiglia di scaricarlo e riprovare.
4. Cosa dovrebbe essere fatto se non succede nulla durante il lancio di Xcode?
Se non succede nulla quando si lancia Xcode, scaricalo e riprova viene suggerito.
5. Quale azione dovrebbe essere intrapresa se si verifica un problema a preparare il codespace durante il lancio del codice Visual Studio?
Se c’è un problema che prepara il CodSpace durante il lancio del codice Visual Studio, è meglio riprovare.
6. Quali informazioni fornisce la sezione “ultimo commit”?
La sezione “Ultima commissione” visualizza i dettagli del più recente commit effettuato nel repository.
7. Cosa mostra la sezione “statistiche git”?
La sezione “Git Statists” fornisce una panoramica delle statistiche GIT per il repository.
8. Quali informazioni sono presentate nella sezione “file”?
La sezione “Files” mostra informazioni sui file nel repository, inclusi eventuali fallimenti per caricare le ultime informazioni di commit.
9. Cos’è Baileys?
Baileys è un nodo puro.JS Implementazione dell’API Web WhatsApp. Consente la comunicazione diretta con WhatsApp Web utilizzando un WebSocket, senza la necessità di un browser come il selenio.
10. Come possono essere installati e importati i baileys?
Baileys può essere installato da NPM usando il comando “NPM Installa GitHub: Adiwajshing/Baileys.”Può quindi essere importato nel codice usando” const whatsappweb = requisito (‘baileys’).”
Esperienza e raccomandazioni personali:
Nella mia esperienza personale, comprendere l’architettura e la progettazione del sistema di WhatsApp è stato cruciale nello sviluppo di applicazioni che si integrano con la piattaforma. Baileys, essendo un nodo puro.JS Implementation, ha reso molto più facile interagire con WhatsApp Web senza la necessità di strumenti di automazione del browser come il selenio. Consiglio vivamente di sfruttare tali librerie per chiunque cerchi di creare applicazioni oltre all’infrastruttura di WhatsApp.
Comprensione dell’architettura e della progettazione del sistema di Whatsapp
Mentre la crittografia end-to-end può farti sentire al sicuro in teoria. In pratica, la crittografia end-to-end non è’T come protezione per la privacy come si spera.
roxdavirox/socket-whatsapp
Questo commit non appartiene a nessun ramo in questo repository e può appartenere a una forchetta al di fuori del repository.
Switch Branches/Tags
Tag di rami
Impossibile caricare i rami
Niente da mostrare
Impossibile caricare tag
Niente da mostrare
Nome già in uso
Un tag esiste già con il nome della filiale fornito. Molti comandi git accettano nomi di tag e ramo, quindi la creazione di questo ramo può causare comportamenti imprevisti. Sei sicuro di voler creare questo ramo?
Annulla Crea
- Locale
- Codpaces
Https github cli
Utilizzare GIT o checkout con SVN utilizzando l’URL Web.
Lavorare velocemente con la nostra CLI ufficiale. Ulteriori informazioni sulla CLI.
Autenticazione richiesta
Si prega di accedere per utilizzare Codespaces.
Avvio del desktop GitHub
Se non succede nulla, scarica Github Desktop e riprova.
Avvio del desktop GitHub
Se non succede nulla, scarica Github Desktop e riprova.
Avvio di Xcode
Se non succede nulla, scarica Xcode e riprova.
Avvio del codice Visual Studio
Il tuo Codpace si aprirà una volta pronto.
C’è stato un problema a preparare il tuo codice, riprova.
Ultimo commit
Statistiche git
File
Impossibile caricare le ultime informazioni sulla commissione.
Ultimo messaggio di commit
Commettere tempo
Readme.MD
API Web WhatsApp inverse inverse nel nodo puro.js. Baileys non richiede che il selenio o qualsiasi altro browser siano interfacciati con WhatsApp Web, lo fa direttamente utilizzando un WebSocket.
Grazie a Sigalor per aver scritto la guida al reverse ingegneria WhatsApp Web e grazie a Rhymen per il andare reimplementazione.
Baileys è super facile da usare:
- Installa da NPM utilizzando NPM Installa GitHub: Adiwajshing/Baileys
- Quindi importa nel codice utilizzando
const WhatsAppWeb = richiedere('Baileys')
permettere cliente = nuovo WhatsAppWeb() cliente.Collegare()
cliente.gestori.Onconnected = () => / * Quando sei autenticato correttamente con i server Web WhatsApp */ >
cliente.gestori.OnunreadMessage = (Messaggio) => / * Chiamato quando si dispone di un messaggio non letto in sospeso o ricevi un nuovo messaggio */ >
cliente.gestori.Onerror = (errore) => / * chiamato quando si è verificato un errore */ >
cliente.gestori.presenza updata = (id, presenza) => / * chiamato quando ricevi un aggiornamento sulla presenza di qualcuno */ >
cliente.gestori.ondisconnect = () => / * chiamato quando Internet viene disconnesso */ >
cliente.gestori.OnunreadMessage = (M) => const messagepo = cliente.getMessageType(M.Messaggio) // Ottieni che tipo di messaggio è: testo, immagine, video >
cliente.gestori.OnunreadMessage = (M) => const messagepo = cliente.getMessageType(M.Messaggio) // Ottieni che tipo di messaggio è: testo, immagine, video // Se il messaggio non è un messaggio di testo Se (messagepo !== WhatsAppWeb.Messagepo.testo && messagepo !== WhatsAppWeb.Messagepo.Testo esteso) cliente.Decodemediamessage(M.Messaggio, "nome del file") // estensione applicata automaticamente .Poi (meta => console.tronco d'albero(M.chiave.remotejid + "Inviato media, salvato a:" + meta.nome del file)) .presa (err => console.tronco d'albero("Errore nel messaggio di decodifica:" + err)) > >
cliente.invia un messaggio di testo(id, txtmessage)
O se vuoi citare un altro messaggio:
cliente.invia un messaggio di testo(id, txtmessage, citadMessage)
cliente.Inviamessage(id, MediaBuffer, tipo di supporto, informazioni)
- La miniatura può essere generata automaticamente per immagini e adesivi.
- MediaBuffer è solo un buffer contenente il contenuto dei media che si desidera inviare
- MediaType rappresenta il tipo di messaggio che stai inviando. Questo può essere uno dei seguenti:
[ WhatsAppWeb.Messagepo.Immagine, // un messaggio di immagine WhatsAppWeb.Messagepo.video, // un video messaggio WhatsAppWeb.Messagepo.Audio, // un messaggio audio WhatsAppWeb.Messagepo.etichetta // Un messaggio adesivo "
informazioni = didascalia: "Ciao!", // la didascalia da inviare con i media (non può essere inviata con adesivi) miniatura: nullo, /* deve essere un JPEG codificato di base 64 se si desidera inviare un pollice personalizzato, o impostato su NULL se non si desidera inviare una miniatura. Non immettere questo campo se si desidera generare automaticamente un pollice */ MimeType: "Applicazione/PDF", /* Specificare il tipo di media (facoltativo per tutti i tipi di media tranne i documenti), per file pdf => imposta su "applicazione/pdf", per txt files => imposta su "applicazione/txt" eccetera. */ GIF: VERO // applicabile solo ai messaggi video, se il video deve essere trattato come una GIF >
cliente.SendReadReceipt(id, MessageID)
cliente.UpdatePresence(id, presenza)
Questo consente alla persona con ID di conoscere il tuo stato. Dove la presenza può essere una delle seguenti:
statico Presenza = disponibile: "disponibile", // "in linea" non disponibile: "non disponibile", // disconnesso composizione: "composizione", // "digitando. " registrazione: "registrazione", // "registrazione. " in pausa: "Pausa" // Non ho idea >
const Authjson = cliente.Base64Ecodedauthinfo()
const Authjson = JSON.analizzare( fs.ReadFilesync("Auth_info.JSON ") ) cliente.login(Authjson)
cliente.iSonwhatsapp ("[CountryCode] [some10DigiTnumber] @S.WhatsApp.netto") .Poi ((esiste, id) => Se (esiste) console.tronco d'albero(id + "è su whatsapp") > altro console.tronco d'albero(id + "Non è su WhatsApp :(") > >)
Dai un’occhiata e esegui l’esempio.js per vedere l’uso di esempio di tutte queste funzioni. Per eseguire lo script di esempio, scaricare o clonare il repository e quindi digitare quanto segue nel terminale:
- CD Path/to/baileys/esempio
- Esempio di nodo.js
Non sono in alcun modo affiliato a WhatsApp. Questo è stato scritto per scopi educativi. Usalo a tua discrezione.
Comprensione dell’architettura e del design del sistema di Whatsapp
Ti sei mai chiesto come funziona Whatsapp? Noi’VE ha studiato la progettazione del sistema di alto livello e l’architettura di WhatsApp’tecnologia S. Immergerti per vedere cosa abbiamo imparato.
Tag del tipo di contenuto
Sommario
Quale app ha oltre 2.5 miliardi di utenti attivi, oltre 5 miliardi di download ed è l’app più popolare in oltre 100 paesi?
Suggerimento: controlla il titolo dell’articolo.
Sì, quello’s giusto. WhatsApp è il servizio di messaggistica più popolare al mondo. Secondo Mark Zuckerberg, ogni giorno vengono inviati oltre 100 miliardi di messaggi su WhatsApp.
Con un traffico così quasi astronomico, si può’T AIUTA MA CHE CHIUDERE COME WHAZZAPP – La progettazione del sistema, l’architettura del server, la tecnologia . Come gestisce così tanti utenti e messaggi simultanei? Che tipo di framework e linguaggi di programmazione consentono quel tipo di scala? Come mantengono tutti quei dati sicuri? Così tante domande!
In questo articolo, faremo un’immersione profonda in WhatsApp’S Architettura e progettazione del sistema. Noi’Rispondi a tutte le domande sopra menzionate e altro ancora.
Se tu’VE si è mai chiesto del cagnolino nel mondo dell’app di chat, continua a leggere.
Disclaimer: Abbiamo perlustrato Internet per raccogliere ogni risorsa sul design dell’architettura di WhatsApp e abbiamo compilato e riassunto qui. Per quanto ne sappiamo, queste informazioni sono accurate. Tuttavia, poiché le aziende aggiornano frequentemente il loro stack tecnologico, queste informazioni sono soggette a modifiche.
WhatsApp Front-End Tech Stack
Permettere’s Inizia con il frontend e fatti strada verso l’hardware sul backend.
La prima parte della progettazione del sistema WhatsApp con cui un utente interagisce è l’app mobile o web. WhatsApp supporta quasi tutte le piattaforme. Ha un’app iOS, l’app Android, l’app desktop, l’app Web e l’app Windows Phone. Fino al 2017, potresti persino usare WhatsApp su un BlackBerry.
Con così tante piattaforme supportate, potresti aver indovinato che WhatsApp sarebbe un’app ibrida. Ma, in effetti,’s no. In realtà hanno creato un’app nativa per ogni piattaforma. Ecco un elenco di tutte le piattaforme supportate con le lingue front-end che sono state utilizzate per costruire ciascuna:
Come WhatsApp memorizza chattare a livello locale
Oltre al linguaggio di programmazione stesso, un’altra tecnologia importante che WhatsApp utilizza sul frontend è un database SQLite. SQLite è un database autonomo, autonomo e relazionale che è pensato per essere incorporato in applicazioni, il che significa che vive sul tuo dispositivo. WhatsApp lo usa per archiviare le conversazioni. Dal momento che sarebbe uno spreco di risorse scaricare tutti i messaggi dal cloud ogni volta che apri l’app, WhatsApp sceglie di archiviare i messaggi a livello locale. In effetti, WhatsApp memorizza solo i messaggi fino a quando non vengono ricevuti a quel punto vengono rimossi.
Quali protocolli di messaggistica utilizza WhatsApp?
WhatsApp utilizza una versione altamente modificata di XMPP su un server Ejabberd (ne parleremo più avanti) per comunicare con i client.
L’XMPP sul client apre una presa SSL ai server WhatsApp. Tutti i messaggi inviati vengono messi in coda sui server fino a quando il client non si apre o si riconnette a questo socket per recuperare i messaggi. Una volta che un messaggio viene recuperato correttamente dal client, uno stato di successo viene inviato al server WhatsApp. Il server quindi inoltra questo stato al mittente originale; far loro sapere che il messaggio è stato ricevuto aggiungendo il “segno di spunta” icona accanto al messaggio inviato correttamente.
Tieni presente che, sebbene XMPP sia uno dei protocolli di messaggistica più popolari per le app di chat, non è sicuramente l’unica opzione per scegliere un protocollo di messaggistica.
Tecnologia di crittografia WhatsApp
WhatsApp utilizza la crittografia end-to-end. Idealmente, ciò significa che solo il mittente originale e il vero destinatario del messaggio possono leggere il messaggio in un testo semplice.
Quando si invia un messaggio, viene crittografato utilizzando un protocollo di crittografia specifico (ne parleremo più avanti). WhatsApp quindi memorizza questo messaggio crittografato sui loro server fino a quando’S consegnato al destinatario. Al momento della consegna, il dispositivo del destinatario decrittica il messaggio in un messaggio leggibile e in chiaro utilizzando una chiave crittografica unica. In tutto questo processo, WhatsApp non conosce mai il contenuto del tuo messaggio.
WhatsApp’La tecnologia di crittografia è chiamata protocollo di crittografia del segnale, che è stato sviluppato da sussurri del sistema aperto per essere un protocollo di crittografia moderna, a source aperta per i sistemi di messaggistica asincrona.
Mentre la crittografia end-to-end può farti sentire al sicuro in teoria. In pratica, la crittografia end-to-end non è’T come protezione per la privacy come si spera.
WhatsApp Back-End Tech Stack
Permettere’S Passa al backend.
Per quanto ne sappiamo, l’attuale design del sistema back-end di WhatsApp sembra questo:
- Erlang è il linguaggio di programmazione principale
- FreeBSD è il sistema operativo
- Ejabberd è il server delle applicazioni XMPP
- TRAVE è la macchina virtuale basata su Erlang
- Mnesia è il loro database basato su Erlang
- Yaws è il loro server Web multimediale
Permettere’s Esplora alcuni degli aspetti più interessanti di WhatsApp’Ar Architecture back-end:
Erlang
La scelta del linguaggio di programmazione di WhatsApp è in gran parte ciò che gli consente di funzionare su una scala così colossale.
Erlang è un linguaggio di programmazione funzionale che è orientato alla costruzione di sistemi simultanei, scalabili e affidabili. Utilizza un modello basato sul processo chiamato “Modello dell’attore” in cui piccoli processi isolati comunicano tra loro attraverso messaggi. Questi processi possono creare nuovi processi, inviare messaggi e modificare il proprio stato in risposta alla ricezione di messaggi.
La sua proprietà basata sul processo offre a Erlang la sua concorrenza, scalabilità e affidabilità estremamente elevata.
Questi processi possono anche comunicare con processi al di fuori del nucleo su cui funziona. Ciò rende facile ridimensionare il sistema in orizzontale (aggiungendo più macchine) o verticalmente (aggiungendo più core). Infine, poiché i processi possono comunicare tra loro e, soprattutto, riavviarsi, esso’è facile costruire sistemi di auto-guarigione. Se un bug si blocca un processo, un altro processo può riavviarlo.
FreeBSD
Una scelta tecnica interessante dei fondatori di WhatsApp è stata scegliere FreeBSD come sistema operativo anziché un sistema più utilizzato (come Linux).
Brian Acton, uno dei cofondatori di WhatsApp, ha detto questo in un’intervista con Wired sulla decisione:
“Linux è una bestia di complessità. FreeBSD ha il vantaggio di essere un’unica distribuzione con una collezione di porte straordinariamente buona.”
Inoltre, quando si tratta di prestazioni grezze, soprattutto per quanto riguarda il carico di sistema per pacchetto, nessun altro sistema operativo può battere FreeBSD.
Tuttavia, quando si tratta di esso, la vera ragione per cui hanno deciso di usare FreeBSD è probabilmente perché entrambi i co-fondatori avevano una lunga storia di lavorarci a Yahoo!.
Ejabberd
Ejabberd è un server XMPP open source che è scritto in Erlang. WhatsApp utilizza una versione modificata di XMPP come protocollo per la gestione della consegna dei messaggi. Anche il server Ejabberd che WhatsApp utilizza è fortemente personalizzato per ottimizzare le prestazioni del server.
Che cosa’s lo scopo di ejabberd?
Bene, gestisce il routing dei messaggi, la consegna e gli aspetti generali di messaggistica istantanea dell’app. Le caratteristiche di Ejabberd includono:
- Messaggistica individuale
- Chat di gruppo
- Conservare e inoltrare messaggi offline
- Elenco dei contatti e presenza
Mnesia
Per archiviare i dati e i messaggi temporanei, WhatsApp utilizza un DBMS distribuito (sistema di gestione del database) basato su Erlang chiamato Mnesia. Questo DBMS offre vantaggi che molti database tradizionali non’T come:
- Ricerca chiave/valore in tempo reale
- Elevata tolleranza ai guasti
- Riconfigurazione dinamica
- Oggetti complessi
La Mnesia è anche l’unico DBMS che’s scritto in erlang. Questo di per sé è un vantaggio perché non ci sono differenze di struttura dei dati tra Erlang nell’applicazione ed Erlang nel DBMS. La codifica è, quindi, più rapida ed esplicita.
TRAVE
Raggio, corto “Bogdan’Serlang Abstract Machine”, è una macchina virtuale che compila ed esegue il codice sorgente Erlang. Il raggio è progettato specificamente per applicazioni altamente simultanee – Perfetto per WhatsApp’S Caso d’uso. TRAVE’La salsa segreta è processi leggeri che non’T Condividi la memoria e sono gestiti dagli Scheduler. Questi programmi possono gestire milioni di processi su più core. Ciò rende il raggio altamente scalabile e resistente ai guasti, come quelli causati da elevati carichi di traffico, aggiornamenti di sistema e interruzioni di rete.
Beam è così cruciale per il design del sistema WhatsApp che il team di WhatsApp ha pubblicato molte patch e correzioni sul codice sorgente principale.
Suddate
Yaws (ancora un altro server Web) è un server Web basato su Erlang ideale per il contenuto dinamico. WhatsApp usa imbardati per la memorizzazione di dati multimediali. Yaws stesso utilizza websocket HTML5 che semplificano la comunicazione a due vie stabilendo una connessione affidabile e veloce tra il server e l’app. Attraverso l’uso di questa tecnologia, WhatsApp è in grado di inviare e ricevere dati multimediali tra miliardi di dispositivi, in tempo reale.
Componenti hardware di WhatsApp
Nel 2017, quattro anni dopo essere stato acquisito da Facebook, WhatsApp è stato tolto da IBM Softlayer’s cloud e portato su Facebook’Da data center proprietari.
Quello che sappiamo è che nel 2014 WhatsApp ha richiesto circa 550 server e oltre 11.000 core che gestiva Erlang. Sappiamo anche che WhatsApp’La base di utenti S era “solo” circa mezzo miliardo nel 2014 rispetto agli oltre 2 miliardi di utenti che ha raggiunto nel 2020. Quindi, con questi dati in mente, ti lasceremo immaginare quanti server e core WhatsApp ora richiedono. Immaginiamo che sia molto.
Diagramma di architettura di Whatsapp
Il modo più semplice per comprendere piena di WhatsApp’S Architecture Design è, ovviamente, attraverso un diagramma di architettura WhatsApp.
A partire dal lato sinistro abbiamo più client diversi (app mobili e web), ognuno dei quali ospita un database SQLite locale per l’archiviazione delle conversazioni.
I client utilizzano WebSocket HTTP per inviare e recuperare i dati multimediali come immagini e video dal server Web Yaws. Ma, come puoi vedere, XMPP viene utilizzato per inviare effettivamente quei file e altri messaggi ad altri utenti.
Quando viene inviato un messaggio XMPP, passa attraverso la serie di passaggi sopra descritti. Innanzitutto, viene inviato a WhatsApp’S Server Ejabberd personalizzato che funziona su Beam e FreeBSD. Il server Ejabberd salva il messaggio in una tabella di database Mnesia in cui viene messo in coda. Quando l’utente ricevente apre l’app, riconnettendosi in tal modo al socket, il messaggio in coda viene instradato attraverso il server Ejabberd e consegnato al destinatario. Una volta confermata la consegna corretta, il messaggio viene eliminato dal database Mnesia.
Conclusione
Mentre indossiamo’t so le specifiche esatte di whatsapp’S Architettura tecnica e progettazione del sistema, possiamo avere una buona idea basata sulle tecnologie che WhatsApp impiega. Speriamo che questo articolo, esplorando il design dell’architettura di WhatsApp, abbia risposto alle tue domande in fiamme. Ora che hai acquisito una comprensione di come funziona il server WhatsApp, ha imparato come appare lo stack tecnologico di WhatsApp e ha persino scansionato un diagramma di architettura WhatsApp. Forse ti senti autorizzato ad affrontare un progetto di app di chat.
Se tu’è pronto a dare una corsa a WhatsApp per i loro soldi, iscriviti al nostro dashboard per sviluppatori e inizia a costruire la tua app di chat gratuitamente.
Ma tieni presente che molte delle tecnologie nello stack della tecnologia WhatsApp sono state scelte specificamente per la loro capacità di ridimensionare e gestire una concorrenza estremamente elevata.
Se tu’sta cercando di costruire un’app di appuntamenti o telemedicina (o qualsiasi cosa che non lo fa’b ha bisogno di quasi tutto il mondo per essere online allo stesso tempo), potrebbe non aver bisogno della quantità di scala che WhatsApp fa.
In altre parole, lo stack tecnologico di WhatsApp, sebbene perfetto per WhatsApp, potrebbe non essere la soluzione migliore per te. Per conoscere l’architettura ideale e lo stack tecnologico per un’app di chat, vai a questo articolo.
Se hai ancora domande su ciò che è giusto per te, sentiti libero di parlare con i nostri esperti e prima di iniziare a costruire la tua app di chat.
Solo affamato di più? Ecco alcune altre grandi risorse in cui immergersi:
- Il mito della crittografia end-to-end nelle app di messaggistica
- Comprensione della progettazione dell’architettura e del sistema di un’applicazione di chat
- 11 Errore sciocco Gli sviluppatori fanno quando si costruiscono un’applicazione di chat
Circa l’autore
Cosette Cressler è un marketer di contenuti appassionato specializzato in SaaS, tecnologia, carriere, produttività, imprenditorialità e auto-sviluppo. Aiuta a far crescere aziende di tutte le dimensioni creando contenuti coerenti e digeribili che catturano l’attenzione e guida l’azione.
WhatsApp usa la presa
Об этой сттце
Ыы зарегистрировали подозритеstituire. С помощю ээй ст р ы ыы сможем о imperceде quello. Почему ээо мо л поззти?
Эта страница отображается в тех с лччч, когда автоматическиtal систе quisi которые наршают условия иполззования. Страница перестан scegliere. До этого момента для иполззования сжж google необходимо пхоходить поверку по по по по по.
” ылку запросов. Если ы и ипоеете общий доступ в интернет, проmma. Обратитесь к с ое системому администратору. Подробнеi.
Проверка по слову может также появляться, если вы вводите сложные запросы, обычно распространяемые автоматизированными системами, или же вводите запросы очень часто.
XMPP vs WebSocket – che utilizzare per le applicazioni?
Mentre costruisci un’app di messaggistica istantanea reattiva e altamente ricca di funzionalità da zero è il tuo obiettivo, la parte più preoccupante è: capire il protocollo ottimale per la messaggistica. Le scelte offerte (entrambe) sono spiegate in pochi minuti.
Per dirlo chiaramente, abbiamo cercato di portare una conoscenza sostanziale sul protocollo XMPP contro WebSocket tramite questo post a te. Conosciuti per le loro caratteristiche e strutture distinte, questi due protocolli IM possono aprire il percorso per una migliore comunicazione istantanea mentre andiamo avanti nel tempo. Tuttavia, esso’non è facile scegliere poiché uno facile ha vantaggi e limiti distinti.
obiettivi formativi
Iscriviti per le ultime notizie
Mukhaddin Beshkov
Esperto verificato
Più di 20 anni competenza IT in ingegneria di sistema, analisi della sicurezza, architettura di soluzioni. Competente in OS (Windows, Linux, Unix), Programmazione (C ++, Python, HTML/CSS/JS, Bash), DB (Mysql, Oracle, MongoDB, PostgreSQL). Abile in script (PowerShell, Python), DevOps (microservizi, contenitori, CI/CD), sviluppo web (nodo.js, react, angolare). Track record di successo nella gestione dei sistemi IT.
Definizione
XMPP – Tutto sul protocollo
Utilizzato per lo scambio di frammenti XML b/n Il duo server-cliente, XMPP è uno dei primi protocolli a standard aperto riguardanti la comunicazione. Ha una lunga storia di oltre 20 anni. La sua efficace implementazione richiede l’uso obbligatorio di un legame di trasporto adeguato.
Nel modello OSI, XMPP funziona principalmente sul livello dell’applicazione che elabora il modello strutturale XML (delle sue parti o sintassi). Per la trasmissione/relè, ha bisogno di livelli di trasporto’ protocolli’ (HTTP o TCP) Aiuto.
eXTensione MEssaging & Presenza PRotocol, per lo più, viene utilizzato negli sviluppi che coinvolgono applicazioni di chat, applicazioni con strutture come chiamate vocali/videochiamate, invio istantanea di text/ricchi e videochiamate multi-partite.
Professionisti
Con XMPP, hai più vantaggi da divertirsi mentre stai sviluppando un’app IM. Ad esempio:
- Le sue caratteristiche di sicurezza informatica sono abbastanza avanzate da tenere a bada le principali pericoli del mondo digitale.
- L’architettura decentralizzata assicura che sia accessibile a tutti.
- Il supporto tecnico offerto è affidabile ed efficace.
- È flessibile e consente agli utenti finali apportare modifiche al processo di trasmissione dei dati secondo la necessità del progetto.
- Aiuta a stabilire una connessione persistente (continua).
- Semplifica i server B/P di comunicazione consentendo a diverse architetture di trasmettere dati.
- Reagisce immediatamente verso la presenza dell’utente finale. Quindi, tu’Saremo in grado di scoprire se l’utente finale è online o offline.
Contro
Anche se XMPP offre molteplici vantaggi, non è impeccabile. Ci sono alcuni ovvi svantaggi o contro di questo protocollo.
- Manca un meccanismo QoS
- Lo streaming o la comunicazione XML basato sul testo aumenta le spese generali operative
- Il trasporto di contenuti spesso avviene senza alcuna sincronizzazione
- A volte, la presenza e/o i messaggi istantanei possono causare sovraccarico del server
WebSocket: tutto sul protocollo
Esso’S un protocollo IM dell’era moderna, che consente i dati binari e di testo’s to-and-fro flusso per server-cliente in qualsiasi canale persistente.
Esso’s bidirezionale, pieno duplex e di natura statale. Esso’s principalmente utilizzato per un’app mobile che necessita di una connessione continua. Non ha nulla a che fare con la definizione della natura e del tipo di dati in transito. Ha bisogno del supporto di altri protocolli per implementare pienamente l’abilità IM nell’app di chat.
Professionisti
WebSocket è progettato per colmare il divario che la tecnologia basata su HTTP creata nella trasmissione dei dati. Nel tempo, è stato osservato che era più di questo. Dai un’occhiata ai vantaggi chiave da divertirsi con WebSockets.
- Mantiene la comunicazione a meno che il server o il client non la fermi
- Non c’è quasi nessuna corrispondenza a WebSocket quando si tratta di velocità. Può trasmettere dati più velocemente di Ajax e HTTP
- Può rendere possibile la trasmissione dei dati tra i server di origine
- È compatibile con più tipi di piattaforme come mobile, web e desktop
- L’uso di WebSocket è conveniente in quanto esercita solo spese a 2 byte
- Risolve efficacemente il lungo problema
Contro
Nonostante i vantaggi, WebSocket ha alcuni potenziali svantaggi che vale la pena notare. Ad esempio:
- Funziona solo quando hai un browser conforme completamente HTML 5
- Manca il meccanismo di successo come Ajax
- Nessun intermediario o bordo è possibile memorizzazione nella cache
- Quando WebSocket è in azione, gli sviluppatori avranno difficoltà a implementare anche gli stati HTTP più semplici
Confronto di protocolli
Dopo aver avuto una comprensione più profonda del significato di base di questi due protocolli, esso’S Tempo per passare a un confronto WebSocket XMPP V/S dettagliato. Abbiamo scelto a mano alcuni aspetti più importanti e poi abbiamo confrontato le offerte di questi due.
Una breve valutazione della sicurezza di questi due protocolli è fondamentale in quanto l’uso di un protocollo non garantito metterà tutto a rischio. XMPP è un protocollo stagionato a tempo e ha subito più cambiamenti e miglioramenti durante questi anni di attivazione. Man mano che i requisiti di sicurezza cambiano, il protocollo migliora il suo fronte di sicurezza. Viene fornito con vari livelli e funzionalità di sicurezza.
Quando XMPP è attivato, l’identità personale è obbligatoria. Sia i messaggi che gli host devono essere autenticati prima di far parte della comunicazione per evitare il rischio di spoofing. Anche se è stato sufficiente tenere sotto controllo le minacce di spam,
XMPP consente anche agli utenti finali di aggiungere livelli di sicurezza secondo la necessità dell’ora.
Quando si tratta di crittografia, XMPP offre due tipi. La prima crittografia arriva quando si stabilisce una connessione e inizia la sua autenticazione. Questa crittografia si completa con SASL. Una volta creata correttamente la connessione, la comunicazione client-server viene quindi supportata dalla crittografia TLS.
Se WebSocket’L’offerta di sicurezza è esaminata attentamente, sarai in grado di apprendere che ha bisogno di un po ‘di miglioramento. Esso’s un protocollo molto giovane e richiede più miglioramenti e aggiornamenti per abbinare ciò che XMPP offre. Ma non lo fa’significa che manca di sicurezza. Offre la crittografia abbastanza forte da tenere a bada qualsiasi intrusione dannosa.
L’architettura operativa principale di XMPP è decentralizzata, mentre WebSockets segue un’architettura centralizzata. XMPP si basa sul modello client-server e impedisce l’interazione diretta tra i client. WebSockets prendono l’aiuto delle API e assicurano che il client e il server comunicano continuamente.
- Compatibilità con altri protocolli
XMPP è un protocollo primitivo e manca di compatibilità API. D’altra parte, WebSocket è altamente ottimizzato API, che è il nucleo di una migliore compatibilità con altri protocolli.
- Invio e ricezione di dati binari
In WebSockets, la comunicazione prevede l’uso di codici e messaggi, a liberare gli utenti dai problemi di analisi e buffering. Questo rende rapido il trasferimento dei dati. XMPP segue un percorso molto sottile per il trasferimento di dati binari, che rende tutto ingombrante.
WebSocket si occupa del livello di trasporto’s estensibilità, mentre XMPP si occupa del livello dell’applicazione’s estensibilità. Esso’S È possibile aggiungere più di 40 protocolli su WebSocket. Ma XMPP non è’t quello flessibile.
Anche se entrambi sono utili per trasmettere i dati in tempo reale a velocità di fiammata, WebSocket supera XMPP su questo fronte a causa della sua natura centralizzata e della comunicazione continua. XMPP Force Autentication e l’autorizzazione sia del server che del client rallenta un po ‘le sue prestazioni.
Esempi di utilizzo di XMPP e WebSocket
XMPP viene utilizzato nelle applicazioni WhatsApp, Gtalk e Grindr e integrato nelle caratteristiche della chat. Per essere specifici, il protocollo è per lo più preferito laddove la comunicazione sicura o basata su gruppo è la caratteristica principale dell’app.
Trello, Slack e Discord sono le tre app più famose costruite utilizzando WebSockets. Come sappiamo, queste applicazioni sono per team e lavoratori remoti. Per concludere, il protocollo è più utile per le aree di lavoro virtuali limitate in quanto utilizza una connessione continua.
CONCLUSIONE – Quale protocollo utilizzato?
WebSocket e XMPP: entrambi sono progettati per la messaggistica istantanea. Tuttavia, quale dovresti scegliere è una domanda a cui dovrebbe essere data risposta dopo aver preso i requisiti del progetto nel contesto. Per quanto riguarda la nostra comprensione, ti consigliamo di utilizzare WebSocket quando devono essere trasferiti molti dati e la comunicazione dovrebbe rimanere aperta.
XMPP è la scelta migliore da fare quando lo sviluppo richiede tonnellate di plugin e la sicurezza deve essere di prim’ordine. Quindi, prima di fare una scelta tra questi due, devi scoprire quali sono esattamente i tuoi obiettivi di sviluppo. Elaboralo in anticipo e poi scegli un protocollo di conseguenza. Tuttavia, una cosa è sicuro che entrambi offriranno a pari per le prestazioni se usati correttamente.
FAQ
A cosa è usato XMPP?
XMPP (protocollo estensibile di messaggistica e presenza) viene utilizzato per la comunicazione in tempo reale come messaggi istantanei, chat vocale e video e informazioni sulla presenza.
A cosa serve WebSocket?
WebSocket è buono per applicazioni Web in tempo reale come giochi online, applicazioni di chat e piattaforme di trading finanziario.
Può XMPP essere utilizzato con WebSocket?
Sì, XMPP può essere utilizzato con WebSocket per migliorare le applicazioni di comunicazione in tempo reale.
Quali sono i vantaggi di WebSocket su XMPP?
WebSocket ha una latenza inferiore, prestazioni migliori e può essere più facile da implementare rispetto a XMPP.
WebSocket può essere utilizzato per il trasferimento di file?
Secondo le specifiche ufficiali, WebSocket non è progettato per il trasferimento di file. Tuttavia, alcuni sviluppatori hanno trovato il modo di utilizzare WebSocket per il trasferimento di file. Repository github