Χρησιμοποιεί το WhatsApp Socket
Κατανόηση της αρχιτεκτονικής και του συστήματος του WhatsApp
Περίληψη
Η κρυπτογράφηση από άκρο σε άκρο του WhatsApp μπορεί να μην είναι τόσο προστασία από την προστασία της ιδιωτικής ζωής όσο θα ελπίζαμε, παρά τη θεωρητική του ασφάλεια. Αυτό το άρθρο διερευνά την αρχιτεκτονική και το σχεδιασμό του συστήματος του WhatsApp, ρίχνοντας φως στις εσωτερικές λειτουργίες του.
Βασικά σημεία
1. RoxDavirox/Socket-Whatsapp: Αυτή η δέσμευση δεν ανήκει σε κανένα υποκατάστημα σε αυτό το αποθετήριο και μπορεί να προέρχεται από ένα πιρούνι έξω από το αποθετήριο.
2. Όνομα ήδη χρησιμοποιείται: Η δημιουργία ενός κλάδου με ένα όνομα που υπάρχει ήδη ως ετικέτα μπορεί να οδηγήσει σε απροσδόκητη συμπεριφορά. Ο χρήστης καλείται να επιβεβαιώσει τη δημιουργία του κλάδου.
3. Εκκίνηση της επιφάνειας εργασίας GitHub: Εάν δεν συμβεί τίποτα, ο χρήστης συνιστάται να κατεβάσετε το GitHub Desktop και να δοκιμάσετε ξανά.
4. Εκκίνηση Xcode: Εάν δεν συμβεί τίποτα, ο χρήστης συνιστάται να κατεβάσετε το xcode και να δοκιμάσετε ξανά.
5. Εκκίνηση του κώδικα Visual Studio: Ο χρήστης ενημερώνεται ότι ο χώρος κωδικοποίησης του θα ανοίξει μόλις είναι έτοιμος. Εάν υπήρχε πρόβλημα προετοιμασίας του χώρου κωδικοποίησης, ενθαρρύνονται να δοκιμάσουν ξανά.
6. Τελευταία δέσμευση: Εμφανίζονται λεπτομέρειες σχετικά με την τελευταία δέσμευση στο χώρο αποθήκευσης.
7. Στατιστικά στοιχεία: Παρέχεται μια επισκόπηση των στατιστικών στοιχείων GIT για το αποθετήριο.
8. Αρχεία: Εμφανίζονται πληροφορίες σχετικά με τα αρχεία του αποθετηρίου, συμπεριλαμβανομένης της αποτυχίας φόρτωσης των τελευταίων πληροφοριών δέσμευσης.
9. Ανάγνωση.MD: Μια σύντομη περιγραφή της βιβλιοθήκης Baileys, η οποία είναι ένας καθαρός κόμβος.JS Εφαρμογή του WhatsApp Web API χωρίς την ανάγκη για σελήνιο ή οποιοδήποτε άλλο πρόγραμμα περιήγησης. Χρησιμοποιεί το websocket απευθείας για να διασυνδέεται με το WhatsApp Web.
10. Χρήση Baileys: Οδηγίες σχετικά με τον τρόπο εγκατάστασης του Baileys από το NPM και την εισαγωγή του στον κώδικα δίνονται.
Ερωτήσεις και απαντήσεις:
1. Ποιος είναι ο σκοπός της δέσμευσης RoxDavirox/Socket-Whatsapp?
Ο σκοπός αυτής της δέσμευσης είναι ασαφής, καθώς δεν ανήκει σε κανένα υποκατάστημα στο αποθετήριο και μπορεί να προέρχεται από ένα πιρούνι έξω από το χώρο αποθήκευσης.
2. Ποιο πιθανό ζήτημα μπορεί να προκύψει κατά τη δημιουργία ενός κλάδου με ένα όνομα που ήδη υπάρχει ως ετικέτα?
Η δημιουργία ενός κλάδου με ένα όνομα που υπάρχει ήδη ως ετικέτα μπορεί να προκαλέσει απροσδόκητη συμπεριφορά. Συνιστάται να επιβεβαιώσετε πριν δημιουργήσετε ένα τέτοιο υποκατάστημα.
3. Τι πρέπει να γίνει αν δεν συμβεί τίποτα κατά την εκτόξευση της επιφάνειας εργασίας GitHub?
Εάν δεν συμβεί τίποτα κατά την εκκίνηση της επιφάνειας εργασίας GitHub, συνιστάται να το κατεβάσετε και να δοκιμάσετε ξανά.
4. Τι πρέπει να γίνει αν δεν συμβεί τίποτα κατά την εκτόξευση του Xcode?
Εάν δεν συμβεί τίποτα κατά την εκτόξευση του Xcode, προτείνεται η λήψη και η προσπάθεια ξανά.
5. Ποια ενέργεια πρέπει να ληφθεί εάν υπάρχει πρόβλημα προετοιμασίας του χώρου κωδικοποίησης κατά την εκκίνηση του κώδικα Visual Studio?
Εάν υπάρχει ένα ζήτημα που προετοιμάζει το χώρο κωδικοποίησης κατά την εκκίνηση του κώδικα Visual Studio, είναι καλύτερο να δοκιμάσετε ξανά.
6. Ποιες πληροφορίες παρέχουν η ενότητα “Τελευταία δέσμευση”?
Η ενότητα “Τελευταία δέσμευση” εμφανίζει λεπτομέρειες σχετικά με την πιο πρόσφατη δέσμευση για το αποθετήριο.
7. Τι δείχνει η ενότητα “Git Stats”?
Η ενότητα “Git Stats” παρέχει μια επισκόπηση των στατιστικών GIT για το αποθετήριο.
8. Ποιες πληροφορίες παρουσιάζονται στην ενότητα “Αρχεία”?
Η ενότητα “Αρχεία” εμφανίζει πληροφορίες σχετικά με τα αρχεία του χώρου αποθήκευσης, συμπεριλαμβανομένων τυχόν αποτυχιών για τη φόρτωση των τελευταίων πληροφοριών δέσμευσης.
9. Τι είναι η Baileys?
Το Baileys είναι ένας καθαρός κόμβος.JS Εφαρμογή του WhatsApp Web API. Επιτρέπει την άμεση επικοινωνία με το WhatsApp Web χρησιμοποιώντας ένα websocket, χωρίς την ανάγκη για ένα πρόγραμμα περιήγησης όπως το Selenium.
10. Πώς μπορούν να εγκατασταθούν και να εισαχθούν οι Baileys?
Το Baileys μπορεί να εγκατασταθεί από το NPM χρησιμοποιώντας την εντολή “NPM Install GitHub: Adiwajshing/Baileys.”Στη συνέχεια, μπορεί να εισαχθεί στον κώδικα χρησιμοποιώντας” const whatsappweb = απαιτείται (‘baileys’).«
Προσωπική εμπειρία και συστάσεις:
Από την προσωπική μου εμπειρία, η κατανόηση της αρχιτεκτονικής και του σχεδιασμού του συστήματος του WhatsApp ήταν ζωτικής σημασίας για την ανάπτυξη εφαρμογών που ενσωματώνονται στην πλατφόρμα. Baileys, είναι ένας καθαρός κόμβος.Η εφαρμογή JS, έχει καταστήσει πολύ πιο εύκολο να αλληλεπιδράσει με το WhatsApp Web χωρίς την ανάγκη για εργαλεία αυτοματοποίησης του προγράμματος περιήγησης όπως το Selenium. Συνιστώ ανεπιφύλακτα να αξιοποιήσετε τέτοιες βιβλιοθήκες για όσους θέλουν να δημιουργήσουν εφαρμογές στην κορυφή της υποδομής του WhatsApp.
Κατανόηση της αρχιτεκτονικής και του συστήματος WhatsApp
Ενώ η κρυπτογράφηση από άκρο σε άκρο μπορεί να σας κάνει να αισθάνεστε ασφαλείς στη θεωρία. Στην πράξη, η κρυπτογράφηση από άκρο σε άκρο ISN ISN’t ως προστασία προστασίας της ιδιωτικής ζωής όπως θα ελπίζαμε.
roxdavirox/socket-whatsapp
Αυτή η δέσμευση δεν ανήκει σε κανένα υποκατάστημα σε αυτό το αποθετήριο και μπορεί να ανήκει σε ένα πιρούνι έξω από το αποθετήριο.
Διακόπτες/ετικέτες
Ετικέτες υποκαταστημάτων
Δεν μπορούσα να φορτώσω κλάδους
Τίποτα για εμφάνιση
Δεν μπορούσα να φορτώσω ετικέτες
Τίποτα για εμφάνιση
Όνομα ήδη χρησιμοποιείται
Υπάρχει ήδη μια ετικέτα με το παρεχόμενο όνομα κλάδου. Πολλές εντολές GIT δέχονται τόσο ονόματα ετικετών όσο και ονόματα υποκαταστημάτων, οπότε η δημιουργία αυτού του κλάδου μπορεί να προκαλέσει απροσδόκητη συμπεριφορά. Είστε βέβαιοι ότι θέλετε να δημιουργήσετε αυτό το υποκατάστημα?
Ακύρωση Δημιουργία
- Τοπικός
- Κωδικοποιητικοί χώροι
Https github cli
Χρησιμοποιήστε το git ή το checkout με το SVN χρησιμοποιώντας τη διεύθυνση URL Web.
Εργαστείτε γρήγορα με το επίσημο CLI μας. Μάθετε περισσότερα για το CLI.
Απαιτείται
Συνδεθείτε για να χρησιμοποιήσετε χώρους κωδικοποίησης.
Εκκίνηση της επιφάνειας εργασίας GitHub
Εάν δεν συμβεί τίποτα, κατεβάστε το GitHub Desktop και δοκιμάστε ξανά.
Εκκίνηση της επιφάνειας εργασίας GitHub
Εάν δεν συμβεί τίποτα, κατεβάστε το GitHub Desktop και δοκιμάστε ξανά.
Εκκίνηση Xcode
Εάν δεν συμβεί τίποτα, κατεβάστε το xcode και δοκιμάστε ξανά.
Εκκίνηση του κώδικα Visual Studio
Ο κωδικός σας θα ανοίξει μόλις έτοιμο.
Υπήρχε ένα πρόβλημα προετοιμασίας του κωδικοποιητικού χώρου σας, δοκιμάστε ξανά.
Τελευταία δέσμευση
Στατιστικά στοιχεία
Αρχεία
Αποτυχία φόρτωσης τελευταίων πληροφοριών δέσμευσης.
Τελευταίο μήνυμα δέσμευσης
Δεσμευμένος
Ανάγνωση.MD
Αντίστροφη μηχανική API WhatsApp Web σε καθαρό κόμβο.JS. Το Baileys δεν απαιτεί το σελήνιο ή οποιοδήποτε άλλο πρόγραμμα περιήγησης για να είναι διασύνδεση με το WhatsApp Web, το κάνει άμεσα χρησιμοποιώντας ένα websocket.
Σας ευχαριστούμε για τον Sigalor για τη σύνταξη του οδηγού για την αντιστροφή του διαδικτύου WhatsApp Engineering και χάρη στους rhymen για το πηγαίνω επανένταξη.
Το Baileys είναι εξαιρετικά εύκολο στη χρήση:
- Εγκαταστήστε από το NPM χρησιμοποιώντας το NPM Install GitHub: Adiwajshing/Baileys
- Στη συνέχεια, εισαγάγετε στον κωδικό σας χρησιμοποιώντας
κονσερβός Whatsappweb = απαιτώ(«Baileys»·
αφήνω πελάτης = νέος Whatsappweb(· πελάτης.συνδέω-συωδεομαι(·
πελάτης.χειριστές.κατατεθειμένος = (· => / * Όταν επικυρώνετε με επιτυχία με τους διακομιστές ιστού WhatsApp */ >
πελάτης.χειριστές.onunreadMessage = (μήνυμα· => / * Κλήθηκε όταν έχετε ένα εκκρεμό μη αναγνωσμένο μήνυμα ή λάβετε ένα νέο μήνυμα */ >
πελάτης.χειριστές.onerror = (λάθος· => / * κάλεσε όταν υπήρχε σφάλμα */ >
πελάτης.χειριστές.παρουσία = (ταυτότητα, παρουσία· => / * Κλήθηκε όταν λαμβάνετε μια ενημέρωση για την παρουσία κάποιου */ >
πελάτης.χειριστές.onDisconnect = (· => / * Κλήθηκε όταν το Διαδίκτυο αποσυνδεθεί */ >
πελάτης.χειριστές.onunreadMessage = (Μ· => κονσερβός messagetype = πελάτης.getMessageType(Μ.μήνυμα· // Λάβετε ποιο είδος μηνύματος είναι - κείμενο, εικόνα, βίντεο >
πελάτης.χειριστές.onunreadMessage = (Μ· => κονσερβός messagetype = πελάτης.getMessageType(Μ.μήνυμα· // Λάβετε ποιο είδος μηνύματος είναι - κείμενο, εικόνα, βίντεο // Εάν το μήνυμα δεν είναι μήνυμα κειμένου αν (messagetype !== Whatsappweb.Messagetype.κείμενο && messagetype !== Whatsappweb.Messagetype.extendedText· πελάτης.decodemediamessage(Μ.μήνυμα, "όνομα αρχείου"· // επέκταση εφαρμόζεται αυτόματα .έπειτα (μετάτα => κονσόλα.κούτσουρο(Μ.κλειδί.απομακρυσμένος + "Έστειλε μέσα ενημέρωσης, αποθηκευμένα σε:" + μετάτα.όνομα αρχείου·· .σύλληψη (πλανώμαι => κονσόλα.κούτσουρο("Σφάλμα στο μήνυμα αποκωδικοποίησης:" + πλανώμαι·· > >
πελάτης.sendTextMessage(ταυτότητα, txtmessage·
Ή αν θέλετε να αναφέρετε ένα άλλο μήνυμα:
πελάτης.sendTextMessage(ταυτότητα, txtmessage, αναφερόμενος·
πελάτης.sendmediamessage(ταυτότητα, μεσαιωνικός, Τύπος πολυμέσων, πληροφορίες·
- Η μικρογραφία μπορεί να δημιουργηθεί αυτόματα για εικόνες και αυτοκόλλητα.
- Το Mediabuffer είναι απλώς ένα buffer που περιέχει τα περιεχόμενα των μέσων που θέλετε να στείλετε
- Το Mediatype αντιπροσωπεύει τον τύπο του μηνύματος που στέλνετε. Αυτό μπορεί να είναι ένα από τα παρακάτω:
[ Whatsappweb.Messagetype.εικόνα, // ένα μήνυμα εικόνας Whatsappweb.Messagetype.βίντεο, // ένα μήνυμα βίντεο Whatsappweb.Messagetype.ήχος, // ένα μήνυμα ήχου Whatsappweb.Messagetype.αυτοκόλλητη ετικέτα // ένα μήνυμα αυτοκόλλητου ]
πληροφορίες = λεζάντα: "Γειά σου!«, // Η λεζάντα για αποστολή με τα μέσα ενημέρωσης (δεν μπορεί να σταλεί με αυτοκόλλητα όμως) όνυξ του αντίχειρος: μηδενικό, /* Πρέπει να είναι μια βάση 64 κωδικοποιημένη jpeg εάν θέλετε να στείλετε έναν προσαρμοσμένο αντίχειρα, ή ρυθμίστε στο NULL εάν δεν θέλετε να στείλετε μια μικρογραφία. Μην εισάγετε αυτό το πεδίο εάν θέλετε να δημιουργήσετε αυτόματα έναν αντίχειρα */ μιμητέος: "Εφαρμογή/PDF", /* Καθορίστε τον τύπο των μέσων (προαιρετικά για όλους τους τύπους μέσων εκτός από τα έγγραφα), Για αρχεία PDF => Ορίστε σε "Application/PDF", Για αρχεία TXT => Ορίστε σε "Application/TXT" και τα λοιπά. */ γειτονιά: αληθής // ισχύει μόνο για μηνύματα βίντεο, εάν το βίντεο πρέπει να αντιμετωπιστεί ως GIF >
πελάτης.sendreadReceipt(ταυτότητα, messageId·
πελάτης.ενημέρωση(ταυτότητα, παρουσία·
Αυτό επιτρέπει στο άτομο να γνωρίζει την κατάστασή σας. Όπου η παρουσία μπορεί να είναι ένα από τα παρακάτω:
στατικός Παρουσία = διαθέσιμος: "διαθέσιμος", // "Σε σύνδεση" Μη διαθέσιμο: "Μη διαθέσιμο", // offline σύνθετος: "Σύνθεση", // "πληκτρολόγηση. « εγγραφή: "εγγραφή", // "εγγραφή. « παύση: "Παύση" // Δεν έχω ιδέα >
κονσερβός authjson = πελάτης.Base64encodedauthinfo(·
κονσερβός authjson = Json.αναλύω λέξη( FS.readfilesync("auth_info.json "· · πελάτης.Σύνδεση(authjson·
πελάτης.isonwhatsapp ("[CountryCode] [Some10DigitNumber] @s.whatsapp.καθαρά"· .έπειτα ((υπάρχει, ταυτότητα· => αν (υπάρχει· κονσόλα.κούτσουρο(ταυτότητα + "Είναι στο Whatsapp"· > αλλού κονσόλα.κούτσουρο(ταυτότητα + "Δεν είναι στο Whatsapp :("· > >·
Ελέγξτε και εκτελέστε παράδειγμα.JS για να δείτε το παράδειγμα χρήσης όλων αυτών των λειτουργιών. Για να εκτελέσετε το σενάριο παραδείγματος, κατεβάστε ή κλωνοποιήστε το repo και στη συνέχεια πληκτρολογήστε τα ακόλουθα στο τερματικό:
- Διαδρομή CD/to/Baileys/παράδειγμα
- Παράδειγμα κόμβου.JS
Δεν είμαι σε καμία περίπτωση συνδεδεμένη με το WhatsApp. Αυτό γράφτηκε για εκπαιδευτικούς σκοπούς. Χρησιμοποιήστε τη διακριτική σας ευχέρεια.
Κατανόηση της αρχιτεκτονικής και του συστήματος του WhatsApp
Έχετε αναρωτηθεί ποτέ πώς λειτουργεί το Whatsapp? Εμείς’Μελετήθηκε ο σχεδιασμός και η αρχιτεκτονική του συστήματος υψηλού επιπέδου του WhatsApp’τεχνολογία. Βυθιστείτε για να δείτε τι μάθαμε.
Ετικέτα τύπου περιεχομένου
Πίνακας περιεχομένων
Ποια εφαρμογή έχει πάνω από 2.5 δισεκατομμύρια ενεργοί χρήστες, πάνω από 5 δισεκατομμύρια λήψεις, και είναι η πιο δημοφιλής εφαρμογή σε περισσότερες από 100 χώρες?
Συμβουλή: Ελέγξτε τον τίτλο του άρθρου.
Ναι αυτό’είναι σωστά. Το Whatsapp είναι η πιο δημοφιλής υπηρεσία ανταλλαγής μηνυμάτων στον κόσμο. Σύμφωνα με τον Mark Zuckerberg, πάνω από 100 δισεκατομμύρια μηνύματα αποστέλλονται κάθε μέρα το WhatsApp.
Με μια τέτοια σχεδόν ασορροπία, μπορεί κανείς’t Βοήθεια αλλά αναρωτιέστε πώς λειτουργεί το WhatsApp – ο σχεδιασμός του συστήματος, η αρχιτεκτονική διακομιστή, η τεχνολογία . Πώς χειρίζεται τόσους πολλούς ταυτόχρονα χρήστες και μηνύματα? Τι είδους πλαίσια και γλώσσες προγραμματισμού επιτρέπουν αυτό το είδος κλίμακας? Πώς διατηρούν όλα αυτά τα δεδομένα ασφαλή? Τόσες πολλές ερωτήσεις!
Σε αυτό το άρθρο, θα κάνουμε μια βαθιά κατάδυση στο Whatsapp’S Αρχιτεκτονική και Σχεδιασμός Συστήματος. Εμείς’Θα απαντήσω σε όλες τις προαναφερθείσες ερωτήσεις και πολλά άλλα.
Αν εσύ’Αναρωτηθήκατε ποτέ για το κορυφαίο σκυλί στον κόσμο της εφαρμογής συνομιλίας, συνεχίστε να διαβάζετε.
Αποποίηση ευθυνών: Είχαμε καθαρίσει το Διαδίκτυο για να συλλέξουμε κάθε πόρο στο σχεδιασμό της αρχιτεκτονικής WhatsApp και να το συντάσσω και να το συνοψίσουμε εδώ. Από όσο γνωρίζουμε, αυτές οι πληροφορίες είναι ακριβείς. Ωστόσο, καθώς οι εταιρείες ενημερώνουν συχνά την τεχνολογική τους στοίβα, αυτές οι πληροφορίες υπόκεινται σε αλλαγές.
Whatsapp Front-end Tech Stack
Αφήνω’Ξεκινήστε με το frontend και δουλεύετε προς το υλικό στο backend.
Το πρώτο μέρος του σχεδίου συστήματος WhatsApp με τον οποίο ένας χρήστης αλληλεπιδρά είναι η εφαρμογή για κινητά ή ιστός. Το Whatsapp υποστηρίζει σχεδόν όλες τις πλατφόρμες. Διαθέτει εφαρμογή iOS, εφαρμογή Android, εφαρμογή επιφάνειας εργασίας, εφαρμογή ιστού και εφαρμογή Windows Phone. Μέχρι το 2017, θα μπορούσατε ακόμη και να χρησιμοποιήσετε το WhatsApp σε ένα BlackBerry.
Με τόσες πολλές υποστηριζόμενες πλατφόρμες, ίσως έχετε μαντέψει ότι το WhatsApp θα ήταν μια υβριδική εφαρμογή. Αλλά, στην πραγματικότητα, αυτό’δεν είναι. Δημιούργησαν πραγματικά μια εγγενή εφαρμογή για κάθε πλατφόρμα. Ακολουθεί μια λίστα με όλες τις υποστηριζόμενες πλατφόρμες με τις γλώσσες front-end που χρησιμοποιήθηκαν για την κατασκευή του καθενός:
Πώς το Whatsapp αποθηκεύει τη συνομιλία σε τοπικό επίπεδο
Εκτός από την ίδια τη γλώσσα προγραμματισμού, μια άλλη σημαντική τεχνολογία που χρησιμοποιεί το WhatsApp στο Frontend είναι μια βάση δεδομένων SQLite. Το SQLite είναι μια αυτόνομη, αυτοτελής, σχεσιακή βάση δεδομένων που προορίζεται να ενσωματωθεί σε εφαρμογές-που σημαίνει ότι ζει στη συσκευή σας. Το Whatsapp το χρησιμοποιεί για την αποθήκευση συνομιλιών. Δεδομένου ότι θα ήταν σπατάλη πόρων για τη λήψη όλων των μηνυμάτων από το σύννεφο κάθε φορά που ανοίγετε την εφαρμογή, το WhatsApp επιλέγει να αποθηκεύσει τα μηνύματα τοπικά. Στην πραγματικότητα, το WhatsApp αποθηκεύει μόνο μηνύματα μέχρι να ληφθούν σε ποιο σημείο αφαιρούνται.
Ποια πρωτόκολλα μηνυμάτων χρησιμοποιούν το WhatsApp?
Το WhatsApp χρησιμοποιεί μια εξαιρετικά τροποποιημένη έκδοση του XMPP σε έναν διακομιστή Ejabberd (περισσότερο σε αυτό αργότερα) για να επικοινωνήσει με τους πελάτες.
Το XMPP στον πελάτη ανοίγει μια υποδοχή SSL στους διακομιστές WhatsApp. Όλα τα μηνύματα που αποστέλλονται βρίσκονται στην ουρά στους διακομιστές έως ότου ο πελάτης ανοίξει ή επανασυνδεθεί σε αυτήν την υποδοχή για να ανακτήσει τα μηνύματα. Μόλις ένα μήνυμα ανακτηθεί με επιτυχία από τον πελάτη, μια κατάσταση επιτυχίας αποστέλλεται πίσω στον διακομιστή WhatsApp. Στη συνέχεια, ο διακομιστής προωθεί αυτή την κατάσταση στον αρχικό αποστολέα. επιτρέποντάς τους να γνωρίζουν ότι το μήνυμα ελήφθη με την προσθήκη του “σημάδι ελέγχου” εικονίδιο δίπλα στο μήνυμα που αποστέλλεται με επιτυχία.
Λάβετε υπόψη ότι, ενώ το XMPP είναι ένα από τα πιο δημοφιλή πρωτόκολλα μηνυμάτων για εφαρμογές συνομιλίας, σίγουρα δεν είναι η μόνη επιλογή για την επιλογή ενός πρωτοκόλλου μηνυμάτων.
Τεχνολογία κρυπτογράφησης WhatsApp
Το Whatsapp χρησιμοποιεί κρυπτογράφηση από άκρο σε άκρο. Στην ιδανική περίπτωση, αυτό σημαίνει ότι μόνο ο αρχικός αποστολέας και ο αληθινός παραλήπτης του μηνύματος μπορούν να διαβάσουν το μήνυμα σε απλό κείμενο.
Όταν στέλνετε ένα μήνυμα, παίρνει κρυπτογραφημένο χρησιμοποιώντας ένα συγκεκριμένο πρωτόκολλο κρυπτογράφησης (περισσότερα για το επόμενο). Στη συνέχεια, το WhatsApp αποθηκεύει αυτό το κρυπτογραφημένο μήνυμα στους διακομιστές τους μέχρι να το κάνει’παραδίδονται στον παραλήπτη. Κατά την παράδοση, η συσκευή του παραλήπτη αποκρυπτογραφεί το μήνυμα πίσω σε ένα ευανάγνωστο μήνυμα, χρησιμοποιώντας ένα μοναδικό κρυπτογραφικό κλειδί. Σε όλη αυτή τη διαδικασία, το WhatsApp δεν γνωρίζει ποτέ το περιεχόμενο του μηνύματός σας.
Whatsapp’Η τεχνολογία κρυπτογράφησης S ονομάζεται πρωτόκολλο κρυπτογράφησης σήματος, το οποίο αναπτύχθηκε από το Open System Whispers για να είναι ένα σύγχρονο πρωτόκολλο ανοιχτού κώδικα, ισχυρού κρυπτογράφησης για συστήματα ασύγχρονης ανταλλαγής μηνυμάτων.
Ενώ η κρυπτογράφηση από άκρο σε άκρο μπορεί να σας κάνει να αισθάνεστε ασφαλείς στη θεωρία. Στην πράξη, η κρυπτογράφηση από άκρο σε άκρο ISN ISN’t ως προστασία προστασίας της ιδιωτικής ζωής όπως θα ελπίζαμε.
Whatsapp back-end τεχνική στοίβα
Αφήνω’προχωρήστε στο backend.
Από όσο γνωρίζουμε, ο τρέχων σχεδιασμός συστήματος WhatsApp back-end μοιάζει με αυτό:
- Ερλάγκ είναι η κύρια γλώσσα προγραμματισμού
- FreeBSD είναι το λειτουργικό σύστημα
- Jabberd Είναι ο διακομιστής εφαρμογών XMPP
- ΔΕΣΜΗ είναι η εικονική μηχανή με βάση το Erlang
- Μνησσία είναι η βάση δεδομένων που βασίζεται στο Erlang
- Το YAWS είναι ο διακομιστής ιστού πολυμέσων
Αφήνω’Εξερευνήστε μερικές από τις πιο ενδιαφέρουσες πτυχές του WhatsApp’S back-end αρχιτεκτονική:
Ερλάγκ
Η επιλογή του προγραμματισμού της WhatsApp είναι σε μεγάλο βαθμό αυτό που της επιτρέπει να λειτουργεί σε μια τέτοια κολοσσιαία κλίμακα.
Το Erlang είναι μια λειτουργική γλώσσα προγραμματισμού που είναι προσανατολισμένη προς την οικοδόμηση ταυτόχρονων, κλιμακωτών και αξιόπιστων συστημάτων. Χρησιμοποιεί ένα μοντέλο που βασίζεται στη διαδικασία που ονομάζεται το “μοντέλο ηθοποιού” στην οποία οι μικρές, απομονωμένες διαδικασίες επικοινωνούν μεταξύ τους μέσω μηνυμάτων. Αυτές οι διαδικασίες μπορούν να δημιουργήσουν νέες διαδικασίες, να στείλουν μηνύματα και να τροποποιήσουν την κατάστασή τους σε απάντηση στη λήψη μηνυμάτων.
Η ιδιότητα που βασίζεται στη διαδικασία δίνει στο Erlang την εξαιρετικά υψηλή ταυτόχρονη, την επεκτασιμότητα και την αξιοπιστία του.
Αυτές οι διαδικασίες μπορούν επίσης να επικοινωνούν με διαδικασίες εκτός του πυρήνα στον οποίο εκτελείται. Αυτό διευκολύνει την κλιμάκωση του συστήματος οριζόντια (προσθέτοντας περισσότερα μηχανήματα) ή κάθετα (προσθέτοντας περισσότερους πυρήνες). Τέλος, δεδομένου ότι οι διαδικασίες μπορούν να επικοινωνούν μεταξύ τους και, το πιο σημαντικό, να επανεκκινήσουν ο ένας τον άλλον, αυτό’είναι εύκολο να κατασκευαστεί συστήματα αυτοθεραπείας. Εάν ένα σφάλμα συντρίψει μια διαδικασία, μια άλλη διαδικασία μπορεί να την επανεκκινήσει.
FreeBSD
Μια ενδιαφέρουσα τεχνική επιλογή από τους ιδρυτές της WhatsApp έβγαλε το FreeBSD ως λειτουργικό σύστημα αντί για ένα ευρύτερα χρησιμοποιούμενο σύστημα (όπως το Linux).
Ο Brian Acton, ένας από τους συνιδρυτές του Whatsapp, το είπε σε συνέντευξή του με τον Wired για την απόφαση:
“Το Linux είναι ένα θηρίο πολυπλοκότητας. Το FreeBSD έχει το πλεονέκτημα ότι είναι μια ενιαία κατανομή με μια εξαιρετικά καλή συλλογή θυρών.”
Επίσης, όταν πρόκειται για ακατέργαστες επιδόσεις, ειδικά όσον αφορά το φορτίο του συστήματος ανά πακέτο, κανένα άλλο λειτουργικό σύστημα δεν μπορεί να νικήσει το FreeBSD.
Ωστόσο, όταν έρχεται σε αυτό, ο πραγματικός λόγος που αποφάσισαν να χρησιμοποιήσουν το FreeBSD είναι πιθανότατα επειδή και οι δύο συνιδρυτές είχαν μακρά ιστορία συνεργασίας μαζί του στο Yahoo!.
Jabberd
Το Ejabberd είναι ένας διακομιστής XMPP ανοιχτού κώδικα που είναι γραμμένος στο Erlang. Το WhatsApp χρησιμοποιεί μια τροποποιημένη έκδοση του XMPP ως πρωτόκολλο για την παράδοση μηνυμάτων. Ακόμα και ο διακομιστής Ejabberd που χρησιμοποιεί το WhatsApp είναι έντονα προσαρμοσμένος για να βελτιστοποιήσει την απόδοση του διακομιστή.
Τι’είναι ο σκοπός του ejabberd?
Λοιπόν, χειρίζεται τη δρομολόγηση μηνυμάτων, την παραδοχή και τις γενικές στιγμές άμεσων μηνυμάτων της εφαρμογής. Τα χαρακτηριστικά του Ejabberd περιλαμβάνουν:
- Μ
- Ομαδική συνομιλία
- Αποθήκευση και προώθηση μηνυμάτων εκτός σύνδεσης
- Λίστα επαφών και παρουσία
Μνησσία
Για να αποθηκεύσετε δεδομένα και προσωρινά μηνύματα, το WhatsApp χρησιμοποιεί ένα Distributed DBMS με βάση το Erlang (σύστημα διαχείρισης βάσεων δεδομένων) που ονομάζεται Mnesia. Αυτό το DBMS παρέχει οφέλη που πολλές παραδοσιακές βάσεις δεδομένων Don’όπως:
- ΚΛΕΙΔΙΑ/ΑΝΑΛΥΣΗ ΑΝΤΙΠΡΟΣΩΠΟΥ ΠΕΡΙΕΧΟΜΕΝΟΥ
- Υψηλή ανοχή σφάλματος
- Δυναμική αναδιάρθρωση
- Σύνθετα αντικείμενα
Η Μνησσία είναι επίσης το μόνο DBMS που’s γραμμένο στο erlang. Αυτό από μόνο του είναι ένα όφελος επειδή δεν υπάρχουν διαφορές δομής δεδομένων μεταξύ του Erlang στην εφαρμογή και του Erlang στο DBMS. Επομένως, η κωδικοποίηση είναι ταχύτερη και πιο σαφής.
ΔΕΣΜΗ
Δέσμη, σύντομη για “Φούσκωμα’S erlang αφηρημένη μηχανή”, είναι ένα εικονικό μηχάνημα που μεταγλωττίζει και εκτελεί τον πηγαίο κώδικα Erlang. Η δέσμη έχει σχεδιαστεί ειδικά για εξαιρετικά ταυτόχρονες εφαρμογές – ιδανική για το WhatsApp’S. ΔΕΣΜΗ’Η μυστική σάλτσα είναι ανοιχτόχρωμο διαδικασίες που ο Don’t Μνήμη μνήμης και διαχειρίζεται οι προγραμματιστές. Αυτοί οι προγραμματιστές μπορούν να διαχειριστούν εκατομμύρια διαδικασίες σε πολλούς πυρήνες. Αυτό καθιστά την δέσμη εξαιρετικά κλιμακωτή και ανθεκτική σε αποτυχίες, όπως αυτές που προκαλούνται από υψηλά φορτία κυκλοφορίας, ενημερώσεις συστήματος και διακοπές δικτύου.
Το Beam είναι τόσο σημαντικό για το σχεδιασμό του συστήματος WhatsApp ότι η ομάδα WhatsApp έχει δημοσιεύσει πολλά μπαλώματα και διορθώσεις στον βασικό πηγαίο κώδικα.
Χείλη
Το YAWS (ακόμα ένας διακομιστής ιστού) είναι ένας διακομιστής ιστού που βασίζεται στο Erlang που είναι ιδανικός για δυναμικό περιεχόμενο. Το WhatsApp χρησιμοποιεί το YAWS για την αποθήκευση δεδομένων πολυμέσων. Ο ίδιος ο Yaws χρησιμοποιεί το HTML5 WebSockets που απλοποιούν την αμφίδρομη επικοινωνία, δημιουργώντας μια αξιόπιστη και γρήγορη σύνδεση μεταξύ του διακομιστή και της εφαρμογής. Μέσω της χρήσης αυτής της τεχνολογίας, το WhatsApp είναι σε θέση να στείλει και να λαμβάνει δεδομένα πολυμέσων σε δισεκατομμύρια συσκευές – κοντά σε πραγματικό χρόνο.
Στοιχεία υλικού WhatsApp
Το 2017, τέσσερα χρόνια μετά την απόκτηση του Facebook, το Whatsapp απομακρύνθηκε από το IBM Softlayer’S Cloud και έφερε στο Facebook’s κέντρα δεδομένων ιδιόκτητα.
Αυτό που γνωρίζουμε είναι ότι το 2014 το WhatsApp απαιτούσε περίπου 550 διακομιστές και πάνω από 11.000 πυρήνες που έτρεξαν Erlang. Γνωρίζουμε επίσης ότι το whatsapp’Η βάση των χρηστών S ήταν “μόνο” περίπου μισό δισεκατομμύριο το 2014 σε σύγκριση με τα περισσότερα από 2 δισεκατομμύρια χρήστες που έφτασε το 2020. Έτσι, με τα δεδομένα αυτά στο μυαλό, θα σας αφήσουμε να φανταστείτε πόσους διακομιστές και πυρήνες Whatsapp απαιτεί τώρα. Φαντάζουμε ότι είναι πολύ.
Διάγραμμα αρχιτεκτονικής Whatsapp
Ο ευκολότερος τρόπος για να κατανοήσετε πλήρως το WhatsApp’Ο σχεδιασμός αρχιτεκτονικής είναι, φυσικά, μέσω ενός διαγράμματος αρχιτεκτονικής WhatsApp.
Ξεκινώντας από την αριστερή πλευρά έχουμε πολλούς διαφορετικούς πελάτες (εφαρμογές κινητής τηλεφωνίας και ιστού), καθένα από τα οποία φιλοξενεί μια τοπική βάση δεδομένων SQLite για την αποθήκευση συνομιλιών.
Οι πελάτες χρησιμοποιούν το HTTP WebSockets για να στείλουν και να ανακτήσουν δεδομένα πολυμέσων όπως εικόνες και βίντεο από το Web Server Yaws. Αλλά, όπως μπορείτε να δείτε, το XMPP χρησιμοποιείται για να στείλει πραγματικά αυτά τα αρχεία και άλλα μηνύματα σε άλλους χρήστες.
Όταν αποστέλλεται ένα μήνυμα XMPP, περνάει από τη σειρά των βημάτων που απεικονίζονται παραπάνω. Πρώτον, αποστέλλεται στο Whatsapp’S Custom Ejabberd Server που εκτελείται σε δέσμη και FreeBSD. Ο διακομιστής Ejabberd αποθηκεύει το μήνυμα σε έναν πίνακα βάσης δεδομένων Mnesia, όπου παίρνει σε ουρά. Όταν ο χρήστης που λαμβάνει την εφαρμογή, επανασυνδεδεμένος στην υποδοχή, το μήνυμα στην ουρά μεταφέρεται μέσω του διακομιστή Ejabberd και παραδίδεται στον παραλήπτη. Μόλις επιβεβαιωθεί η επιτυχής παράδοση, το μήνυμα διαγράφεται από τη βάση δεδομένων Mnesia.
συμπέρασμα
Ενώ’να γνωρίζουμε τις ακριβείς προδιαγραφές του WhatsApp’S Τεχνική Αρχιτεκτονική και Σχεδιασμός Συστήματος, μπορούμε να έχουμε μια καλή ιδέα με βάση τις τεχνολογίες που χρησιμοποιεί το WhatsApp. Ελπίζουμε ότι αυτό το άρθρο, εξερευνώντας το σχεδιασμό αρχιτεκτονικής WhatsApp, απάντησε στις ερωτήσεις σας για καύση. Τώρα που έχετε αποκτήσει μια κατανόηση για το πώς λειτουργεί ο διακομιστής WhatsApp, έμαθε τι μοιάζει με το WhatsApp Tech Stack και ακόμη και σαρώθηκε ένα διάγραμμα αρχιτεκτονικής WhatsApp. Ίσως αισθάνεστε εξουσιοδοτημένοι να αναλάβετε ένα δικό σας έργο εφαρμογής συνομιλίας.
Αν εσύ’Re είναι έτοιμος να δώσετε στο WhatsApp ένα τρέξιμο για τα χρήματά τους, να εγγραφείτε στον πίνακα ελέγχου προγραμματιστή μας και να αρχίσετε να χτίζετε την εφαρμογή συνομιλίας σας δωρεάν.
Αλλά να έχετε κατά νου ότι πολλές από τις τεχνολογίες στη στοίβα τεχνολογίας WhatsApp επιλέχθηκαν ειδικά για την ικανότητά τους να κλιμακώνονται και να χειρίζονται εξαιρετικά υψηλή ταυτότητα.
Αν εσύ’προσπαθώ να δημιουργήσω μια εφαρμογή χρονολόγησης ή τηλεϊατρική (ή οτιδήποτε δεν κάνει’Δεν χρειάζομαι σχεδόν ολόκληρο τον κόσμο να είναι online ταυτόχρονα), ίσως να μην χρειαστείτε την κλίμακα που κάνει το Whatsapp.
Με άλλα λόγια, η στοίβα τεχνολογίας WhatsApp, ενώ είναι ιδανική για το WhatsApp, μπορεί να μην είναι η καλύτερη λύση για εσάς. Για να μάθετε για την ιδανική αρχιτεκτονική και την τεχνολογική στοίβα για μια εφαρμογή συνομιλίας, κατευθυνθείτε σε αυτό το άρθρο.
Εάν εξακολουθείτε να έχετε ερωτήσεις σχετικά με το τι είναι σωστό για εσάς, μη διστάσετε να μιλήσετε με τους ειδικούς μας και προτού αρχίσετε να χτίζετε τη δική σας εφαρμογή συνομιλίας.
Απλά πεινασμένος για περισσότερα? Ακολουθούν μερικοί περισσότεροι πόροι για να βουτήξετε σε:
- Ο μύθος της κρυπτογράφησης από άκρο σε άκρο στις εφαρμογές μηνυμάτων
- Κατανόηση της αρχιτεκτονικής και του σχεδιασμού συστήματος μιας εφαρμογής συνομιλίας
- 11 ανόητοι προγραμματιστές λάθος κάνουν κατά την οικοδόμηση μιας εφαρμογής συνομιλίας
Σχετικά με τον Συγγραφέα
Η Cosette Cressler είναι ένας παθιασμένος έμπορος περιεχομένου που ειδικεύεται σε SaaS, τεχνολογία, σταδιοδρομία, παραγωγικότητα, επιχειρηματικότητα και αυτο-ανάπτυξη. Βοηθά στην ανάπτυξη επιχειρήσεων όλων των μεγεθών δημιουργώντας συνεπές, εύπεπτο περιεχόμενο που καταγράφει την προσοχή και οδηγεί τη δράση.
Χρησιμοποιεί το WhatsApp Socket
Э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э
Ы з з з з з з з и и и и п п п п п п з п з з з з з з з з з п. С п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п. ПOчем э э э э э э э э э э э п п п п п п п?
Э э э э э а а а а и е е з з л л л л л л л э э э э э э э э э э э э Κοιτάζοντας το ριμπάγ. С с п п п п п э э э э э э э э э э э э э э э э э э э э э э э э э э э э. Д э э э э д д д и и д д д ρίας н и д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д.
И и з а а а а а а а а ы ы з .. Е е е е д п п ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж п п п п п п п п п п п п п п п п п. Орrρά. Пороннαι.
ПON п п е е а а τροφή пρέφ а а а а а τροφήλου. е е е и τροφή ее же жÉ в в ж и и и и ч ч.
XMPP vs WebSocket – που θα χρησιμοποιήσετε για εφαρμογές?
Ενώ η οικοδόμηση μιας εφαρμογής που ανταποκρίνεται και είναι πλούσια σε χαρακτηριστικά γνωρίσματα άμεσων μηνυμάτων (IM) από το μηδέν είναι ο στόχος σας, το πιο συναρπαστικό μέρος είναι: Η εξεύρεση του βέλτιστου πρωτοκόλλου για μηνύματα. Οι προσφερόμενες επιλογές (και οι δύο) εξηγούνται σε λίγα λεπτά.
Για να το πούμε καθαρά, προσπαθήσαμε να φέρουμε σημαντικές γνώσεις σχετικά με το πρωτόκολλο XMPP εναντίον του Websocket μέσω αυτής της ανάρτησης σε εσάς. Γνωστή για τα ξεχωριστά χαρακτηριστικά και τις εγκαταστάσεις τους, αυτά τα δύο πρωτόκολλα IM μπορούν να ανοίξουν το μονοπάτι για βελτιωμένη άμεση επικοινωνία καθώς προχωρούμε στο χρόνο. Ωστόσο, αυτό’Δεν είναι εύκολο να διαλέξετε, καθώς ένα εύκολο έχει ξεχωριστά πλεονεκτήματα και περιορισμούς.
Στόχοι μάθησης
Εγγραφείτε για τα τελευταία νέα
Mukhaddin Beshkov
Επαληθευμένος εμπειρογνώμονας
20+ χρόνια εμπειρογνωμοσύνη στην τεχνολογία του συστήματος, ανάλυση ασφαλείας, αρχιτεκτονική λύσεων. Ικανοποίηση σε OS (Windows, Linux, Unix), Προγραμματισμός (C ++, Python, HTML/CSS/JS, Bash), DB (MySQL, Oracle, MongoDB, PostgreSQL). Ειδικευμένος στο Scripting (PowerShell, Python), DevOps (Microservices, Containers, CI/CD), Ανάπτυξη Ιστού (Κόμβος.JS, αντιδρά, γωνιακό). Επιτυχημένη ιστορία στη διαχείριση των συστημάτων πληροφορικής.
Ορισμός
XMPP – όλα σχετικά με το πρωτόκολλο
Χρησιμοποιείται για την ανταλλαγή θραυσμάτων XML B/W Το δίδυμο διακομιστή-πελάτη, το XMPP είναι ένα από τα πρώτα πρωτόκολλα ανοιχτής προτύπων σχετικά με την επικοινωνία. Έχει μακρά ιστορία άνω των 20 ετών. Η αποτελεσματική εφαρμογή του απαιτεί την υποχρεωτική χρήση της κατάλληλης δέσμευσης μεταφοράς.
Στο μοντέλο OSI, το XMPP λειτουργεί κυρίως στο στρώμα εφαρμογής που επεξεργάζεται το δομικό πρότυπο XML (των τμημάτων ή της σύνταξής του). Για μετάδοση/αναμετάδοση, χρειάζεται στρώματα μεταφοράς’ πρωτόκολλα’ (HTTP ή TCP) βοήθεια.
μιΧέντατος ΜΈκλευση & Πεπίγνωση ΠΤο Rotocol, κυρίως, χρησιμοποιείται σε εξελίξεις που περιλαμβάνουν εφαρμογές συνομιλίας, εφαρμογές με εγκαταστάσεις όπως φωνητική/τηλεοπτική κλήση, άμεση αποστολή κειμένου/πλούσιων μέσων και τηλεοπτικής κλήσης πολλαπλών τμημάτων.
Πλεονεκτήματα
Με το XMPP, έχετε πολλά οφέλη για να απολαύσετε ενώ αναπτύσσετε μια εφαρμογή IM. Για παράδειγμα:
- Τα χαρακτηριστικά του στον κυβερνοχώρο είναι αρκετά προχωρημένα για να διατηρήσουν τους κορυφαίους κινδύνους του ψηφιακού κόσμου στον κόλπο.
- Η αποκεντρωμένη αρχιτεκτονική εξασφαλίζει ότι είναι προσβάσιμο σε όλους.
- Η τεχνική υποστήριξη που προσφέρεται είναι αξιόπιστη και αποτελεσματική.
- Είναι ευέλικτο και αφήνει τους τελικούς χρήστες να κάνουν αλλαγές στη διαδικασία μετάδοσης δεδομένων σύμφωνα με την ανάγκη του έργου.
- Βοηθά στην καθιέρωση μιας συνεχιζόμενης (συνεχούς) σύνδεσης.
- Απλοποιεί τους διακομιστές επικοινωνίας B/W, επιτρέποντας διαφορετικές αρχιτεκτονικές για τη μετάδοση δεδομένων.
- Αντιδρά αμέσως προς την παρουσία του τελικού χρήστη. Ως εκ τούτου, εσύ’Θα μπορέσω να μάθω αν ο τελικός χρήστης είναι συνδεδεμένος ή εκτός σύνδεσης.
Κατά τα βοηθήματα
Ακόμα κι αν το XMPP κάνει πολλαπλά οφέλη, δεν είναι άψογη. Υπάρχουν ορισμένα προφανή μειονεκτήματα ή μειονεκτήματα αυτού του πρωτοκόλλου.
- Δεν διαθέτει μηχανισμό QOS
- Η ροή ή η επικοινωνία με βάση το κείμενο αυξάνει τα λειτουργικά γενικά έξοδα
- Η μεταφορά περιεχομένου πραγματοποιείται συχνά χωρίς συγχρονισμό
- Μερικές φορές, η παρουσία ή/και τα άμεσα μηνύματα μπορεί να προκαλέσει υπερφόρτωση διακομιστή
Websocket – όλα σχετικά με το πρωτόκολλο
Το’s ένα πρωτόκολλο IM της σύγχρονης εποχής, επιτρέποντας δυαδικά και δεδομένα κειμένου’s to-and-fro ροή για διακομιστή-πελάτη σε οποιοδήποτε επίμονο κανάλι.
Το’S αμφίδρομη, πλήρης αμφίδρομη και κρατική φύση. Το’S που χρησιμοποιείται κυρίως για μια εφαρμογή για κινητά που χρειάζεται συνεχή σύνδεση. Δεν έχει καμία σχέση με τον ορισμό της φύσης και του τύπου των δεδομένων σε μεταφορά. Χρειάζεται την υποστήριξη άλλων πρωτοκόλλων για την πλήρη εφαρμογή της ικανότητας IM στην εφαρμογή συνομιλίας.
Πλεονεκτήματα
Το Websocket έχει σχεδιαστεί για να γεμίσει το κενό που δημιουργήθηκε η τεχνολογία που βασίζεται σε HTTP στη μετάδοση δεδομένων. Με την πάροδο του χρόνου παρατηρήθηκε ότι ήταν κάτι περισσότερο από αυτό. Ρίξτε μια ματιά στα βασικά οφέλη για να απολαύσετε με websockets.
- Διατηρεί την επικοινωνία εκτός εάν ο διακομιστής ή ο πελάτης το σταματήσουν
- Δεν υπάρχει σχεδόν καμία αντιστοιχία με το websocket όταν πρόκειται για ταχύτητα. Μπορεί να μεταδίδει δεδομένα γρηγορότερα από τα Ajax και HTTP
- Μπορεί να κάνει τη μετάδοση δεδομένων μεταξύ των διακομιστών προέλευσης
- Είναι συμβατό με πολλαπλά είδη πλατφορμών όπως κινητά, ιστό και επιφάνεια εργασίας
- Η χρήση του WebSockets είναι οικονομικά αποδοτική καθώς ασκεί μόνο έξοδα 2 byte
- Διορθώνει αποτελεσματικά το μεγάλο ζήτημα των ψηφοφοριών
Κατά τα βοηθήματα
Παρά τα οφέλη, το Websocket έχει κάποια πιθανά μειονεκτήματα που αξίζει να σημειωθούν. Για παράδειγμα:
- Λειτουργεί μόνο όταν έχετε ένα πλήρες πρόγραμμα περιήγησης HTML 5
- Στερείται μηχανισμού επιτυχίας Ajax
- Κανένας ενδιάμεσος ή άκρη είναι δυνατή η προσωρινή αποθήκευση
- Όταν το WebSocket είναι σε δράση, οι προγραμματιστές θα έχουν έναν σκληρό χρόνο να εφαρμόσουν ακόμη και τις πιο απλές καταστάσεις HTTP
Σύγκριση πρωτοκόλλων
Αφού έχετε μια βαθύτερη κατανόηση της βασικής σημασίας αυτών των δύο πρωτοκόλλων, αυτό’χρόνος για να προχωρήσετε σε μια λεπτομερή σύγκριση WebSocket XMPP V/S. Έχουμε πάρει το χέρι μερικές πιο σχετικά πτυχές και στη συνέχεια συγκρίναμε τις προσφορές αυτών των δύο.
Μια σύντομη αξιολόγηση ασφαλείας αυτών των δύο πρωτοκόλλων είναι ζωτικής σημασίας καθώς η χρήση ενός μη εξασφαλισμένου πρωτοκόλλου θα θέσει τα πάντα σε κίνδυνο. Το XMPP είναι ένα πρωτόκολλο με το χρόνο και έχει περάσει από πολλαπλές αλλαγές και βελτιώσεις σε όλα αυτά τα έτη ενεργοποίησης. Καθώς αλλάζουν οι απαιτήσεις ασφαλείας, το πρωτόκολλο βελτιώνει το μέτωπο ασφαλείας του. Έρχεται με διάφορα στρώματα και χαρακτηριστικά ασφαλείας.
Όταν ενεργοποιείται το XMPP, η προσωπική ταυτότητα είναι υποχρεωτική. Τόσο τα μηνύματα όσο και οι οικοδεσπότες πρέπει να πιστοποιηθούν πριν αποτελούν μέρος της επικοινωνίας για να αποφευχθεί η απομάκρυνση του κινδύνου. Παρόλο που ήταν αρκετό να διατηρηθεί υπό έλεγχο απειλές ανεπιθύμητων μηνυμάτων,
Το XMPP επιτρέπει ακόμη στους τελικούς χρήστες να προσθέτουν στρώματα ασφαλείας σύμφωνα με την ανάγκη της ώρας.
Όταν πρόκειται για κρυπτογράφηση, το XMPP προσφέρει δύο τύπους. Η πρώτη κρυπτογράφηση δημιουργείται όταν μια σύνδεση δημιουργεί και αρχίζει ο έλεγχος ταυτότητας. Αυτή η κρυπτογράφηση ολοκληρώνεται με το SASL. Μόλις κατασκευαστεί η σύνδεση με επιτυχία, στη συνέχεια υποστηρίζεται η επικοινωνία πελάτη-διακομιστή με κρυπτογράφηση TLS.
Εάν το websocket’Η προσφορά ασφαλείας S εξετάζεται προσεκτικά, θα μπορείτε να μάθετε ότι χρειάζεται λίγο βελτίωση. Το’είναι ένα πολύ νέο πρωτόκολλο και απαιτεί περισσότερη βελτίωση και αναβαθμίσεις για να ταιριάζει με αυτό που προσφέρει το XMPP. Αλλά, δεν είναι’δεν σημαίνει ότι δεν έχει ασφάλεια. Προσφέρει κρυπτογράφηση αρκετά ισχυρή για να διατηρήσει οποιαδήποτε κακόβουλη διείσδυση στον κόλπο.
Η βασική επιχειρησιακή αρχιτεκτονική του XMPP είναι αποκεντρωμένη, ενώ το WebSockets ακολουθεί μια κεντρική αρχιτεκτονική. Το XMPP βασίζεται στο μοντέλο πελάτη-διακομιστή και εμποδίζει την άμεση αλληλεπίδραση μεταξύ των πελατών. Οι WebSockets λαμβάνουν τη βοήθεια των API και εξασφαλίζουν ότι ο πελάτης και ο διακομιστής επικοινωνούν συνεχώς.
- Συμβατότητα με άλλα πρωτόκολλα
Το XMPP είναι ένα πρωτόγονο πρωτόκολλο και στερείται συμβατότητας API. Από την άλλη πλευρά, το Websocket είναι εξαιρετικά βελτιστοποιημένο, το οποίο είναι ο πυρήνας της καλύτερης συμβατότητας με άλλα πρωτόκολλα.
- Αποστολή και λήψη δυαδικών δεδομένων
Στα websockets, η επικοινωνία περιλαμβάνει τη χρήση κωδικών και μηνυμάτων, ο ρύθμιση των χρηστών δωρεάν από τα προβλήματα της ανάλυσης και της αποθήκευσης προβλημάτων. Αυτό κάνει τη μεταφορά δεδομένων γρήγορη. Το XMPP ακολουθεί μια πολύ λεπτή διαδρομή για τη δυαδική μεταφορά δεδομένων, η οποία κάνει τα πάντα δυσκίνητα.
Το WebSocket ασχολείται με το επίπεδο μεταφοράς’S Extensibility, ενώ το XMPP ασχολείται με το επίπεδο εφαρμογής’επεκτάσιμο. Το’είναι δυνατόν να προσθέσετε περισσότερα από 40 πρωτόκολλα έναντι websockets. Όμως, το XMPP είναι’ΤΙ ΕΙΝΑΙ ΤΟ ΕΛΛΗΝΙΚΟ.
Παρόλο που και οι δύο είναι χρήσιμες για τη μετάδοση δεδομένων σε πραγματικό χρόνο σε ταχύτητα Blazing, το WebSocket ξεπερνά το XMPP σε αυτό το μέτωπο λόγω της κεντρικής φύσης και της συνεχούς επικοινωνίας του. Ο έλεγχος ταυτότητας και εξουσιοδότησης του XMPP Force και η εξουσιοδότηση τόσο του διακομιστή όσο και του πελάτη επιβραδύνουν λίγο την απόδοσή του.
Παραδείγματα χρήσης XMPP και WebSocket
Το XMPP χρησιμοποιείται σε εφαρμογές WhatsApp, GTalk και GRINDR και ενσωματωμένες στις λειτουργίες συνομιλίας. Για να είμαστε συγκεκριμένοι, το πρωτόκολλο προτιμάται κυρίως όταν η επικοινωνία με βάση ένα προς ένα είναι το κύριο χαρακτηριστικό της εφαρμογής.
Το Trello, το Slack και το Discord είναι οι τρεις πιο διάσημες εφαρμογές που κατασκευάστηκαν χρησιμοποιώντας το WebSockets. Όπως γνωρίζουμε, αυτές οι εφαρμογές είναι για ομάδες και απομακρυσμένους εργαζόμενους. Συμπερασματικά, το πρωτόκολλο είναι πιο χρήσιμο για περιορισμένους εικονικούς χώρους εργασίας καθώς χρησιμοποιεί συνεχή σύνδεση.
Συμπέρασμα – Ποιο πρωτόκολλο θα χρησιμοποιηθεί?
Websocket και XMPP – και οι δύο έχουν σχεδιαστεί για άμεση ανταλλαγή μηνυμάτων. Ωστόσο, ποιο θα πρέπει να επιλέξετε είναι μια ερώτηση που πρέπει να απαντηθεί μετά τη λήψη των απαιτήσεων του έργου στο πλαίσιο. Όσον αφορά την κατανόησή μας, σας συνιστούμε να χρησιμοποιήσετε το WebSockets όταν πρέπει να μεταφερθούν πολλά δεδομένα και η επικοινωνία πρέπει να παραμείνει ανοιχτή.
Το XMPP είναι η καλύτερη επιλογή που πρέπει να κάνετε όταν η ανάπτυξη απαιτεί τόνους plugins και η ασφάλεια πρέπει να είναι κορυφαία. Έτσι, προτού κάνετε μια επιλογή μεταξύ αυτών των δύο, πρέπει να μάθετε ποιοι είναι ακριβώς οι αναπτυξιακοί σας στόχοι. Επεξεργαστείτε το εκ των προτέρων και, στη συνέχεια, επιλέξτε ένα πρωτόκολλο ανάλογα. Ωστόσο, ένα πράγμα είναι βέβαιο ότι και οι δύο θα παραδώσουν στο PAR επιδόσεις εάν χρησιμοποιηθούν σωστά.
Συχνές ερωτήσεις
Τι χρησιμοποιείται για το XMPP?
Το XMPP (πρωτόκολλο επεκτάσεως μηνυμάτων και παρουσίας) χρησιμοποιείται για επικοινωνία σε πραγματικό χρόνο, όπως άμεσα μηνύματα, συνομιλία με φωνή και βίντεο και πληροφορίες παρουσίας.
Τι είναι το websocket καλό για?
Το WebSocket είναι καλό για εφαρμογές ιστού σε πραγματικό χρόνο, όπως online gaming, εφαρμογές συνομιλίας και πλατφόρμες χρηματοοικονομικών συναλλαγών.
Μπορεί το XMPP να χρησιμοποιηθεί με το websocket?
Ναι, το XMPP μπορεί να χρησιμοποιηθεί με το websocket για να βελτιώσει τις εφαρμογές επικοινωνίας σε πραγματικό χρόνο.
Ποια είναι τα πλεονεκτήματα του websocket πάνω από το XMPP?
Το Websocket έχει χαμηλότερη καθυστέρηση, καλύτερη απόδοση και μπορεί να είναι ευκολότερη στην εφαρμογή από το XMPP.
Μπορεί το Websocket να χρησιμοποιηθεί για μεταφορά αρχείων?
Σύμφωνα με την επίσημη προδιαγραφή, το Websocket δεν έχει σχεδιαστεί για μεταφορά αρχείων. Ωστόσο, ορισμένοι προγραμματιστές έχουν βρει τρόπους για να χρησιμοποιήσουν το websocket για μεταφορά αρχείων. Αποθετήριο Github