Разбиране на архитектурата и системния дизайн на WhatsApp
Резюме
Край до край на WhatsApp може да не е толкова защитен от поверителност, колкото би се надявал, въпреки теоретичната си сигурност. Тази статия изследва архитектурата и дизайна на системата на WhatsApp, хвърляйки светлина върху вътрешната си работа.
Ключови точки
1. roxdavirox/socket-whatsapp: Този ангажимент не принадлежи на нито един клон на това хранилище и може да бъде от вилица извън хранилището.
2. Име вече в употреба: Създаването на клон с име, което вече съществува като маркер, може да доведе до неочаквано поведение. Потребителят е подканен да потвърди създаването на клона.
3. Стартиране на GitHub Desktop: Ако нищо не се случи, потребителят се съветва да изтегли десктопа на GitHub и да опита отново.
4. Стартиране на Xcode: Ако нищо не се случи, потребителят се препоръчва да изтегли xcode и да опита отново.
5. Стартиране на код на Visual Studio: Потребителят е информиран, че тяхното кодово пространство ще се отвори, след като е готово. Ако е имало проблем с подготовката на кодовото пространство, те се насърчават да опитат отново.
6. Последен ангажимент: Показват се подробности за най -новия ангажимент, направен на хранилището.
7. Git stats: Предоставен е преглед на статистиката на GIT за хранилището.
8. Файлове: Показана е информация за файловете в хранилището, включително неизпълнение на най -новата информация за ангажиране.
9. ПРОЧЕТИ МЕ.MD: Кратко описание на библиотеката Baileys, която е чист възел.JS реализация на уеб API на WhatsApp без нужда от селен или друг браузър. Той използва WebSocket директно за взаимодействие с WhatsApp Web.
10. Използване на Baileys: Дадени са инструкции как да инсталирате Baileys от NPM и да го импортирате в кода.
Въпроси и отговори:
1. Каква е целта на ангажимента Roxdavirox/Socket-Whatsapp?
Целта на този ангажимент не е неясна, тъй като не принадлежи към нито един клон в хранилището и може да бъде от вилица извън хранилището.
2. Какъв потенциален проблем може да възникне при създаване на клон с име, което вече съществува като маркер?
Създаването на клон с име, което вече съществува като маркер, може да причини неочаквано поведение. Препоръчително е да потвърдите, преди да създадете такъв клон.
3. Какво трябва да се направи, ако нищо не се случи при стартиране на десктоп GitHub?
Ако нищо не се случва при стартиране на десктоп GitHub, се препоръчва да го изтеглите и да опитате отново.
4. Какво трябва да се направи, ако нищо не се случи при стартиране на Xcode?
Ако нищо не се случва при стартиране на Xcode, се предлага изтегляне и опит отново.
5. Какви действия трябва да се предприемат, ако има проблем с подготовката на кодовото пространство при стартиране на Visual Studio Code?
Ако има проблем с подготовката на кодовото пространство при стартиране на код на Visual Studio, най -добре е да опитате отново.
6. Каква информация предоставя разделът „Последно ангажиране“?
Разделът „Последно ангажиране“ показва подробности за най -новия ангажимент, направен в хранилището.
7. Какво показва разделът “git stats”?
Разделът „Git Stats“ предоставя преглед на статистиката на GIT за хранилището.
8. Каква информация е представена в секцията “Файлове”?
Разделът “Файлове” показва информация за файловете в хранилището, включително всякакви неуспехи за зареждане на най -новата информация за ангажиране.
9. Какво е Бейлис?
Бейлис е чист възел.JS реализация на уеб API на WhatsApp. Тя позволява директна комуникация с WhatsApp Web с помощта на WebSocket, без нужда от браузър като Selenium.
10. Как могат да се инсталират и импортират Baileys?
Baileys може да бъде инсталиран от NPM, като се използва командата “NPM Install GitHub: Adiwajshing/Baileys.”След това може да бъде импортиран в кода, използвайки” const whatsappweb = изискване (‘baileys’).”
Личен опит и препоръки:
В моя личен опит разбирането на архитектурата и дизайна на системата на WhatsApp е от решаващо значение за разработването на приложения, които се интегрират с платформата. Бейлис, като чист възел.Изпълнението на JS направи много по -лесно взаимодействието с WhatsApp Web без нужда от инструменти за автоматизация на браузъра като Selenium. Горещо препоръчвам да използвате такива библиотеки за всеки, който иска да изгради приложения върху инфраструктурата на WhatsApp.
Разбиране на архитектурата и системния дизайн на Whatsapp
Докато криптирането от край до край може да ви накара да се чувствате в безопасност на теория. На практика криптирането от край до край е’t като защита на поверителността, колкото човек би се надявал.
Roxdavirox/Socket-Whatsapp
Този ангажимент не принадлежи на нито един клон на това хранилище и може да принадлежи на вилица извън хранилището.
Превключвайте клони/маркери
Разклонени етикети
Не можеше да зареди клони
Нищо за показване
Не можах да заредя маркери
Нищо за показване
Име вече се използва
Етикет вече съществува с предоставеното име на клона. Много команди GIT приемат както имена на етикети, така и на клоновете, така че създаването на този клон може да причини неочаквано поведение. Сигурни ли сте, че искате да създадете този клон?
Отказ Create
- Местен
- Кодови пространства
Https github cli
Използвайте git или плащане с SVN, като използвате уеб URL адреса.
Работете бързо с нашия официален CLI. Научете повече за CLI.
Вход Изисква се
Моля, влезте, за да използвате кодексни материали.
Стартиране на GitHub Desktop
Ако нищо не се случи, изтеглете десктопа GitHub и опитайте отново.
Стартиране на GitHub Desktop
Ако нищо не се случи, изтеглете десктопа GitHub и опитайте отново.
Стартиране на Xcode
Ако нищо не се случи, изтеглете Xcode и опитайте отново.
Стартиране на код на Visual Studio
Вашето кодово пространство ще се отвори веднъж готов.
Имаше проблем с подготовката на вашето кодово пространство, моля, опитайте отново.
Последно ангажиране
Git stats
Файлове
Не успя да зареди най -новата информация за ангажиране.
Последно съобщение за ангажиране
Ангажиране на време
ПРОЧЕТИ МЕ.MD
Обратно инженерно WhatsApp Web API в чист възел.JS. Baileys не изисква Selenium или друг браузър да бъде интерфейс с WhatsApp Web, той прави директно с помощта на WebSocket.
Благодаря ви на Sigalor, че написахте ръководството за обръщане на инженерството WhatsApp Web и благодаря на Rhymen за отивам пренареждане.
Бейлис е супер лесен за използване:
- Инсталирайте от NPM с помощта на NPM Инсталиране на GitHub: Adiwajshing/Baileys
- След това импортирайте във вашия код, използвайки
const WhatsAppWeb = изискват(„Бейлис“)
позволявам клиент = Ново WhatsAppWeb() клиент.Свържете се()
клиент.ръководители.onconnected = () => / * Когато сте успешно удостоверени с уеб сървърите на WhatsApp */ >
клиент.ръководители.onunreadmessage = (съобщение) => / * се обади, когато имате чакащо непрочетено съобщение или получавате ново съобщение */ >
клиент.ръководители.onerror = (Грешка) => / * се обади, когато имаше грешка */ >
клиент.ръководители.присъстващ = (документ за самоличност, присъствие) => / * се обади, когато получавате актуализация за нечие присъствие */ >
клиент.ръководители.ondisconnect = () => / * извикан, когато интернет се изключи */ >
клиент.ръководители.onunreadmessage = (m) => const MessageType = клиент.getMessagetype(m.съобщение) // Вземете какъв тип съобщение е - текст, изображение, видео >
клиент.ръководители.onunreadmessage = (m) => const MessageType = клиент.getMessagetype(m.съобщение) // Вземете какъв тип съобщение е - текст, изображение, видео // Ако съобщението не е текстово съобщение ако (MessageType !== WhatsAppWeb.MessageType.текст && MessageType !== WhatsAppWeb.MessageType.ExtendedText) клиент.декодемедиамейство(m.съобщение, "име на файл") // разширение, приложено автоматично .тогава (Мета => конзола.log(m.ключ.Remotejid + "Изпрати медии, запазени в:" + Мета.име на файл)) .улов (Err => конзола.log(„Грешка при декодиране на съобщението:“ + Err)) > >
клиент.SendTextMessage(документ за самоличност, txtMessage)
Или ако искате да цитирате друго съобщение:
клиент.SendTextMessage(документ за самоличност, txtMessage, QuotedMessage)
клиент.sendmediamessage(документ за самоличност, MediaBuffer, тип медия, информация)
- Миниизображението може да се генерира автоматично за изображения и стикери.
- MediaBuffer е просто буфер, съдържащ съдържанието на медията, която искате да изпратите
- Mediatype представлява вида на съобщението, което изпращате. Това може да бъде едно от следните:
WhatsAppWeb.MessageType.изображение, // съобщение за изображение WhatsAppWeb.MessageType.видео, // Видео съобщение WhatsAppWeb.MessageType.аудио, // Аудио съобщение WhatsAppWeb.MessageType.Стикер // Стикер съобщение ]
информация = Надпис: "Здравей!", // надписът за изпращане с медиите (все пак не може да бъде изпратен със стикери) Миниизображение: нула, /* трябва да бъде база 64 кодиран JPEG, ако искате да изпратите персонализиран палец, или задайте на нула, ако не искате да изпращате миниатюра. Не влизайте в това поле, ако искате автоматично да генерирате палец *// mimetype: "Приложение/PDF", /* Посочете типа медия (по избор за всички типове медии, с изключение на документи), За PDF файлове => Задайте на "Application/PDF", За txt файлове => зададено на "Application/TXT" и т.н. *// gif: вярно // Приложимо само за видео съобщения, ако видеото трябва да се третира като GIF >
клиент.SendreadReceipt(документ за самоличност, MessageId)
клиент.UpdatePresence(документ за самоличност, присъствие)
Това позволява на човека с идентификатор на вашия статус. където присъствието може да бъде едно от следните:
статично Присъствие = на разположение: "на разположение", // "на линия" недостъпни: "недостъпно", // извън линия композиране: "Състав", // "въвеждане. " Запис: "Запис", // "Запис. " пауза: "Пауза" // Аз нямам представа >
const Authjson = клиент.Base64Encodedauthinfo()
const Authjson = JSON.Парс( fs.ReadFilesync("Auth_info.json ") ) клиент.Влизам(Authjson)
клиент.isonwhatsapp ("[CountryCode] [some10digitnumber] @s.WhatsApp.мрежа ") .тогава ((съществува, документ за самоличност) => ако (съществува) конзола.log(документ за самоличност + "е на WhatsApp") > иначе конзола.log(документ за самоличност + "Не е на WhatsApp :(") > >)
Проверете и стартирайте пример.js, за да видите примерно използване на всички тези функции. За да стартирате примерния скрипт, изтеглете или клонирате репо и след това въведете следното в терминал:
- CD път/към/baileys/пример
- Пример за възел.JS
Аз по никакъв начин не съм свързан с WhatsApp. Това е написано за образователни цели. Използвайте по ваша собствена преценка.
Разбиране на архитектурата и системния дизайн на WhatsApp
Замисляли ли сте се как работи WhatsApp? Ние’VE изучава дизайна и архитектурата на системата на високо ниво на WhatsApp’s технология. Потопете се, за да видите какво научихме.
Тип на съдържанието маркер
Съдържание
Кое приложение има над 2.5 милиарда активни потребители, над 5 милиарда изтегляния и е най -популярното приложение в над 100 страни?
Съвет: Проверете заглавието на статията.
Да това’е правилно. WhatsApp е най -популярната услуга за съобщения в света. Според Марк Зукърбърг, над 100 милиарда съобщения се изпращат през WhatsApp всеки ден.
С такъв почти астрономически трафик човек може’t Помогнете, но се чудите как работи WhatsApp – неговият дизайн на системата, архитектурата на сървъра, технологията . Как се справя с толкова много едновременни потребители и съобщения? Какви рамки и езици за програмиране позволяват този вид мащаб? Как поддържат всички тези данни сигурни? Толкова много въпроси!
В тази статия ще се потопим дълбоко в WhatsApp’S Архитектура и дизайн на системата. Ние’ще отговоря на всички гореспоменати въпроси и други.
Ако ти’Някога се е чудил за най -доброто куче в света на приложението за чат, продължавайте да четете.
Опровержение: Разгледахме интернет, за да съберем всеки ресурс в дизайна на архитектурата на WhatsApp и го съставихме и обобщихме тук. Доколкото ни е известно, тази информация е точна. Въпреки това, тъй като компаниите актуализират техническия си стек често, тази информация подлежи на промяна.
Whatsapp Front-End Tech Stack
Позволявам’s Започнете с фронтата и работим към хардуера на задния бекенд.
Първата част от дизайна на системата WhatsApp, с която потребителят взаимодейства, е мобилното или уеб приложението. WhatsApp поддържа почти всички платформи. Той има приложение за iOS, приложение за Android, настолно приложение, уеб приложение и приложение за Windows Phone. До 2017 г. можете дори да използвате WhatsApp на BlackBerry.
С толкова много поддържани платформи може би сте предположили, че WhatsApp ще бъде хибридно приложение. Но всъщност това’s не. Те всъщност създадоха родно приложение за всяка платформа. Ето списък на всички поддържани платформи с езика (ите) на предния край, които бяха използвани за изграждане на всяка от тях:
Как WhatsApp съхранява чат на местно ниво
В допълнение към самия език за програмиране, друга важна технология, която WhatsApp използва на фронтата, е база данни SQLite. Sqlite е самостоятелна, самостоятелна, релационна база данни, която трябва да бъде вградена в приложения-което означава, че живее на вашето устройство. WhatsApp го използва за съхраняване на разговори. Тъй. Всъщност WhatsApp съхранява само съобщения, докато не бъдат получени в този момент, те се премахнат.
Кои протоколи за съобщения използват WhatsApp?
WhatsApp използва високо модифицирана версия на XMPP на Ejabberd сървър (повече за това по -късно), за да комуникира с клиентите.
XMPP на клиента отваря SSL гнездо към сървърите на WhatsApp. Всички изпратени съобщения са на опашка на сървърите, докато клиентът се отвори или се свърже отново с този гнездо, за да извлече съобщенията. След като съобщението бъде успешно извлечено от клиента, състоянието на успех се изпраща обратно на сървъра на WhatsApp. След това сървърът препраща това състояние на оригиналния подател; Да ги уведомим, че съобщението е получено чрез добавяне на “отметка” Икона до успешно изпратеното съобщение.
Имайте предвид, че докато XMPP е един от най -популярните протоколи за съобщения за приложения за чат, той определено не е единствената опция за избор на протокол за съобщения.
Технология за криптиране на WhatsApp
WhatsApp използва криптиране от край до край. В идеалния случай това означава, че само оригиналният подател и истинският получател на съобщението могат да прочетат съобщението в обикновен текст.
Когато изпратите съобщение, то се криптира с помощта на конкретен протокол за криптиране (повече за следващия). След това WhatsApp съхранява това криптирано съобщение на техните сървъри, докато то’s Доставено на получателя. След доставката устройството на получателя дешифрира съобщението обратно в четене, Splaintext съобщение, използвайки уникален криптографски ключ. През целия този процес WhatsApp никога не знае съдържанието на вашето съобщение.
WhatsApp’S Технология за криптиране се нарича протокол за криптиране на сигнала, който е разработен от отворената система шепне като модерен, силен протокол за криптиране за асинхронни системи за съобщения.
Докато криптирането от край до край може да ви накара да се чувствате в безопасност на теория. На практика криптирането от край до край е’t като защита на поверителността, колкото човек би се надявал.
Tech Stack на Whatsapp Back-End
Позволявам’s Преместете се към задната част.
Доколкото ни е известно, сегашният дизайн на системата Whatsapp Back-енд изглежда така:
- Ерланг е основният език за програмиране
- FreeBSD е операционната система
- Ejabberd е сървърът за приложения на XMPP
- ЛЪЧ е виртуалната машина, базирана на Erlang
- Мнезия е тяхната базирана база данни на Erlang
- Yaws е техният мултимедиен уеб сървър
Позволявам’s Разгледайте някои от по -интересните аспекти на WhatsApp’s бек-енд архитектура:
Ерланг
Изборът на WhatsApp за езика на програмиране е в голяма степен това, което му позволява да работи в такъв колосален мащаб.
Erlang е функционален език за програмиране, който е ориентиран към изграждането на едновременни, мащабируеми и надеждни системи. Той използва модел, базиран на процеса, наречен “Модел на актьора” в които малки, изолирани процеси общуват помежду си чрез съобщения. Тези процеси могат да създават нови процеси, да изпращат съобщения и да променят състоянието си в отговор на получаване на съобщения.
Неговата собственост, базирана на процеса, дава на Erlang своята изключително висока паралелност, мащабируемост и надеждност.
Тези процеси също могат да комуникират с процеси извън ядрото, върху които работи. Това улеснява мащаба на системата хоризонтално (чрез добавяне на повече машини) или вертикално (чрез добавяне на повече ядра). И накрая, тъй като процесите могат да общуват помежду си и по -важното – да се рестартират, то това’лесни за изграждане на системи за самолечение. Ако бъгът срине процес, друг процес може да го рестартира.
FreeBSD
Интересен технически избор от основателите на WhatsApp беше да изберем FreeBSD като операционна система вместо по -широко използвана система (като Linux).
Брайън Актън, един от съоснователите на WhatsApp, каза това в интервю за Wired за решението:
“Linux е звяр на сложността. FreeBSD има предимството да бъде единична дистрибуция с изключително добра колекция пристанища.”
Освен това, що се отнася до суровите характеристики, особено по отношение на натоварването на системата на пакет, никоя друга операционна система не може да победи FreeBSD.
Въпреки това, когато се свежда до него, истинската причина, че те решиха да използват FreeBSD, вероятно е, че и двамата съоснователи имаха дълга история на работа с него в Yahoo!.
Ejabberd
Ejabberd е XMPP сървър с отворен код, който е написан в Erlang. WhatsApp използва модифицирана версия на XMPP като негов протокол за обработка на доставка на съобщения. Дори сървърът на Ejabberd, който WhatsApp използва, е силно персонализиран за оптимизиране за производителността на сървъра.
Какво’е целта на ejabberd?
Е, той обработва маршрута на съобщенията, доставката и общите аспекти на незабавни съобщения на приложението. Характеристиките на Ejabberd включват:
- Съобщения един на един
- Групов чат
- Съхраняване и препращане на офлайн съобщения
- Списък с контакти и присъствие
Мнезия
За да съхранява данни и временни съобщения, WhatsApp използва базирана на Erlang, разпределена СУБД (система за управление на бази данни), наречена MNESIA. Този СУБД осигурява ползи, които много традиционни бази данни гледат’t като:
- Ключ/търсене на ключ/стойност в реално време
- Висока толерантност към повреда
- Динамична преконфигурация
- Сложни обекти
Mnesia е и единствената СУБД, която’S написано в Ерланг. Това само по себе си е от полза, тъй като в приложението няма разлики в структурата на данните между Erlang и Erlang в СУБД. Следователно кодирането е по -бързо и по -изрично.
ЛЪЧ
Лъч, къс за “Богдан’s erlang абстрактна машина”, е виртуална машина, която компилира и изпълнява изходния код на Erlang. Лъчът е проектиран специално за силно едновременни приложения – идеален за WhatsApp’s случай на използване. ЛЪЧ’s Тайният сос е леки процеси, които не са’t Споделяйте паметта и се управляват от планиращи. Тези планиращи могат да управляват милиони процеси в множество ядра. Това прави лъча силно мащабируем и устойчив на повреди, като тези, причинени от високи натоварвания на трафика, актуализации на системата и прекъсвания на мрежата.
Beam е толкова решаващ за дизайна на системата WhatsApp, че екипът на WhatsApp е публикувал много кръпки и поправки към основния изходен код.
Прониции
Yaws (още един уеб сървър) е уеб сървър, базиран на Erlang, който е идеален за динамично съдържание. WhatsApp използва Yaws за съхраняване на мултимедийни данни. Самият Yaws използва HTML5 Websockets, които опростяват двупосочната комуникация, като установяват надеждна и бърза връзка между сървъра и приложението. Чрез използването на тази технология WhatsApp е в състояние да изпраща и получава мултимедийни данни на милиарди устройства – в близост до реално време.
Компоненти на хардуер на WhatsApp
През 2017 г., четири години след придобиването на Facebook, WhatsApp беше свален от IBM Softlayer’S Cloud и вкаран във Facebook’Сен патентовани центрове за данни.
Това, което знаем, е, че през 2014 г. WhatsApp изискваше около 550 сървъра и над 11 000 ядра, които управляваха Erlang. Знаем също, че WhatsApp’Потребителската база беше “само” около половин милиард през 2014 г. в сравнение с повече от 2 милиарда потребители, които достигна през 2020 г. И така, имайки предвид тези данни, ще ви позволим да си представите колко сървъри и ядра WhatsApp сега изисква. Представяме си, че е много.
Диаграма на архитектурата на WhatsApp
Най -лесният начин да получите пълно разбиране на WhatsApp’Разбира се, архитектурният дизайн е чрез диаграма на архитектурата на WhatsApp.
Започвайки от лявата страна, имаме множество различни клиенти (мобилни и уеб приложения), всеки от които хоства локална база данни SQLite за съхранение на разговори.
Клиентите използват HTTP WebSockets за изпращане и извличане на мултимедийни данни като изображения и видеоклипове от уеб сървъра на Yaws. Но, както можете да видите, XMPP се използва за реално изпращане на тези файлове и други съобщения до други потребители.
Когато се изпрати съобщение на XMPP, то преминава през поредицата от стъпки, изобразени по -горе. Първо, той се изпраща до WhatsApp’S персонализиран сървър Ejabberd, който работи на Beam и FreeBSD. Ejabberd сървърът запазва съобщението в таблицата на базата данни на MNESIA, където се поставя в опашка. Когато получаващият потребител отвори приложението, като по този начин се свързва отново с гнездото, съобщението в опашката се пренасочва през Ejabberd сървъра и се доставя на получателя. След като успешната доставка може да бъде потвърдена, съобщението се изтрива от базата данни на MNESIA.
Заключение
Докато ние не’не знам точните спецификации на WhatsApp’s Техническа архитектура и дизайн на системата, можем да получим добра идея въз основа на технологиите, които WhatsApp използва. Надяваме се, че тази статия, изследваща дизайна на архитектурата на WhatsApp, е отговорила на вашите изгарящи въпроси. Сега, когато сте получили разбиране за това как работи WhatsApp сървъра, научи как изглежда технологичният стек WhatsApp и дори сканира диаграма на архитектурата на WhatsApp. Може би се чувствате упълномощени да вземете свой собствен проект за чат.
Ако ти’сте готови да дадете на WhatsApp за парите си, регистрирайте се на нашето табло за разработчици и започнете да изграждате приложението си за чат безплатно.
Но имайте предвид, че много от технологиите в технологичния стек на WhatsApp са били специално избрани заради способността си да мащабират и да се справят с изключително висока паралелност.
Ако ти’Опитвам се да създадете приложение за запознанства или телемедицина (или нещо, което не е’не се нуждаете от почти целия свят, за да бъдете онлайн едновременно), може да не ви е нужно количеството мащаб, което прави WhatsApp.
С други думи, Tech Stack WhatsApp, макар и идеален за WhatsApp, може да не е най -доброто решение за вас. За да научите за идеалната архитектура и технологичен стек за приложение за чат, насочете се към тази статия.
Ако все още имате въпроси за това какво е подходящо за вас, не се колебайте да говорите с нашите експерти и преди да започнете да изграждате собствено приложение за чат.
Просто гладен за още? Ето още няколко страхотни ресурси, които да се потопите в:
- Митът за криптиране от край до край в приложенията за съобщения
- Разбиране на архитектурата и дизайна на системата на приложение за чат
- 11 Глупави грешки, които разработчиците правят при изграждането на приложение за чат
за автора
Cosette Cressler е страстен маркетинг на съдържание, специализиран в SaaS, технология, кариера, производителност, предприемачество и саморазвитие. Тя помага за отглеждането на бизнеса от всякакви размери, като създава последователно, смилаемо съдържание, което привлича вниманието и стимулира действието.
Използва ли WhatsApp гнездо
Остар
Мы -арегистрироли -Подохрильн -Трафик, Исходях Ив Вейх етити. Спомохьщ эtoй strаницы mы смоум опереть, о -аапрус, aneblyерат имно в. Proчemu эto moglos?
Tа -strathiца Отабраееатс v teх слуяя, kogdа -ъ -ъ -зe- зe- зe- зe- зeeeeeeee, рьо kotorые naruшат. Strания. До -атогомоторна джал -длаунеил -ульованая с ср.
Ystoчnikom зprossom SыlkU -AprOSOV. Если-В-апольуеет Обхий-доступ В-интерн, Прблема Мохет БыТь С Компьог-ат-тих. Обраттись к от Свеему Сйстемму. Полробн.
Provера по сонувмо тмор -ъ -рпоятьосьонски, еслиновски – Емами, Или же ваводит -априс -о -сеньо.
XMPP срещу WebSocket – които да използвам за приложения?
Докато изграждането на отзивчиво и силно богато на функции приложение за незабавни съобщения (IM) от нулата е вашата цел, най-засягащата част е: намиране на оптималния протокол за съобщения. Предлаганите избори (и двете) са обяснени след няколко минути.
Да го кажем ясно, ние се опитахме да внесем значителни познания за XMPP Protocol срещу WebSocket чрез тази публикация до вас. Известни със своите отличителни черти и съоръжения, тези два протокола на IM могат да проправят пътя за подобрена незабавна комуникация, докато се движим напред във времето. Това обаче’не е лесно да се избере, тъй като един лесен има различни предимства и ограничения.
Цели на обучението
Абонирайте се за последните новини
Мухаддин Бешков
Проверен експерт
20+ години ИТ експертиза в системното инженерство, анализ на сигурността, архитектура на решения. Опитен в OS (Windows, Linux, Unix), програмиране (C ++, Python, HTML/CSS/JS, BASH), DB (MySQL, Oracle, MongoDB, PostgreSQL). Квалифициран в скриптове (PowerShell, Python), DevOps (Microservices, Containers, CI/CD), Уеб разработка (възел.JS, React, Angular). Успешен опит в управлението на ИТ системи.
Определение
XMPP – Всичко за протокола
Използва се за XML Fragment Exchange B/W дуетът на сървъра-клиент, XMPP е един от ранните протоколи с отворена стандарт, свързани с комуникацията. Има дълга история от над 20 години. Ефективното му изпълнение изисква задължителното използване на подходящо обвързване на транспорта.
В OSI модела XMPP функционира главно на слоя на приложението, който разработва структурния модел XML (на неговите части или синтаксис). За предаване/препредаване се нуждае от транспортни слоеве’ протоколи’ (Http или tcp) помощ.
Eхмрачно Mесегиране & Pвъзобновяване PRotocol, най-вече, се използва в разработки, които включват приложения за чат, приложения със съоръжения като гласови/видео разговори, незабавно изпращане на текст/богати медии и многочастиви видео разговори.
Професионалисти
С XMPP имате множество предимства, за да се насладите, докато разработвате приложение за IM. Например:
- Характеристиките му за киберсигурност са достатъчно напреднали, за да поддържат водещите опасности от дигиталния свят.
- Децентрализираната архитектура гарантира, че е достъпна за всички.
- Предлаганата техническа поддръжка е надеждна и ефективна.
- Той е гъвкав и позволява на крайните потребители да правят промени в процеса на предаване на данни според нуждата от проекта.
- Той помага за установяване на постоянна (непрекъсната) връзка.
- Той опростява комуникацията b/w сървъри, като дава възможност на различни архитектури да предават данни.
- Той реагира веднага към наличието на крайния потребител. Следователно, ти’Ще мога да разбера дали крайният потребител е онлайн или офлайн.
Минуси
Дори и XMPP да доведе до множество предимства, той не е безупречен. Има определени очевидни недостатъци или минуси на този протокол.
- Липсва му QoS механизъм
- Текстовото базирана XML стрийминг или комуникация увеличава оперативните режийни разходи
- Транспортирането на съдържание често се извършва без никаква синхронизация
- Понякога присъствието и/или моменталните съобщения могат да причинят претоварване на сървъра
WebSocket – Всичко за протокола
То’S модерен протокол на IM от епохата, който позволява двоични и текстови данни’S към и-fro поток за сървър-клиент във всеки постоянен канал.
То’s двупосочен, пълен дуплекс и състоятелен по своята същност. То’S главно използвани за мобилно приложение, което се нуждае от текуща връзка. Това няма нищо общо с определянето на естеството и вида на данните в транзит. Той се нуждае от поддръжката на други протоколи, за да приложи напълно способността на IM в приложението за чат.
Професионалисти
WebSocket е проектиран да запълни празнината, която базирана на HTTP технология, създадена при предаване на данни. С течение на времето беше забелязано, че е повече от това. Разгледайте ключовите предимства, които да се насладите с WebSockets.
- Той поддържа комуникацията, освен ако сървърът или клиентът не го спре
- Едва ли има съвпадение на WebSocket, когато става въпрос за скорост. Той може да предава данни по -бързо от AJAX и HTTP
- Може да направи възможно предаване на данни между сървърите за произход
- Той е съвместим с множество видове платформи като мобилни, уеб и десктоп
- Използването на WebSockets е рентабилно, тъй като той само 2-байтови разходи
- Той ефективно коригира дългия проблем за гласуването
Минуси
Въпреки предимствата, WebSocket има някои потенциални недостатъци, които си струва да се отбележи. Например:
- Работи само когато имате напълно съвместим с HTML 5 браузър
- Липсва му механизъм за успех, подобен на Ajax
- Не е възможно посредник или ръб кеширане
- Когато WebSocket е в действие, разработчиците ще имат трудно време, прилагайки дори най -простите състояния на HTTP
Сравнение на протоколи
След като има по -задълбочено разбиране на основното значение на тези два протокола, това’s Време за преминаване към подробно сравнение на XMPP V/S WebSocket. Избрахме ръчно няколко най-притеснителни аспекти и след това сравнихме предложенията на тези две.
Кратката оценка на сигурността на тези два протокола е от решаващо значение, тъй като използването на необезпечен протокол ще изложи всичко на риск. XMPP е протокол, подправен във времето и премина през множество промени и подобрения през тези години на активиране. Тъй като изискванията за сигурност се променят, протоколът подобрява фронта си за сигурност. Предлага се с различни слоеве и функции за сигурност.
Когато XMPP се активира, личната идентичност е задължителна. Както съобщенията, така и хостовете трябва да бъдат удостоверени, преди да бъдат част от комуникацията, за да се избегне рискът за подправяне. Въпреки че беше достатъчно, за да се запазят заплахите за спам под контрол,
XMPP дори позволява на крайните потребители да добавят защитни слоеве според нуждите на часа.
Що се отнася до криптирането, XMPP предлага два вида. Първото криптиране възниква, когато се установи връзка и нейното удостоверяване започва. Това криптиране завършва със SASL. След като връзката е успешно изградена, комуникацията между клиент-сървър се подкрепя от TLS криптиране.
Ако WebSocket’S Офертата за сигурност се изследва внимателно, ще можете да научите, че се нуждае от малко подобрение. То’S много млад протокол и изисква повече подобрения и надстройки, за да съответства на това, което предлага XMPP. Но, това не го прави’t означава, че му липсва сигурност. Той предлага криптиране достатъчно силно, за да поддържа всяко злонамерено нахлуване в разстояние.
Основната оперативна архитектура на XMPP е децентрализирана, докато WebSockets следва централизирана архитектура. XMPP се основава на модела клиент-сървър и предотвратява директното взаимодействие между клиентите. WebSockets поемат помощта на API и се уверете, че клиентът и сървърът комуникират непрекъснато.
- Съвместимост с други протоколи
XMPP е примитивен протокол и липсва съвместимост на API. От друга страна, WebSocket е силно оптимизиран на API, което е сърцевината на по -добрата съвместимост с други протоколи.
- Изпращане и получаване на двоични данни
В WebSockets комуникацията включва използване на кодове и съобщения, освобождаване на потребители без проблеми с проблемите на анализа и буферирането. Това прави трансфера на данни бързо. XMPP следва много тънък път за бинарен трансфер на данни, което прави всичко тромаво.
WebSocket се занимава с транспортния слой’s Разширимост, докато XMPP се занимава със слоя на приложението’s Разширимост. То’Възможно е да се добавят повече от 40 протокола над WebSockets. Но, xmpp isn’t това гъвкаво.
Въпреки че и двете са полезни за предаване на данни в реално време със скорост на пламване, WebSocket превъзхожда XMPP на този фронт поради своя централизиран характер и непрекъсната комуникация. XMPP Force Authentication и разрешение както на сървъра, така и на клиента забавя ефективността си малко.
Примери за използване на XMPP и WebSocket
XMPP се използва в приложения WhatsApp, GTALK и GRINDR и вградени в функциите на чата. За да бъдем конкретни, протоколът е най-вече предпочитан, когато защитената или груповата комуникация е основната характеристика на приложението.
Trello, Slack и Discord са трите най -известни приложения, изградени с помощта на WebSockets. Както знаем, тези приложения са за екипи и отдалечени работници. В заключение, протоколът е по -полезен за ограничени виртуални работни пространства, тъй като използва непрекъсната връзка.
Заключение – Кой протокол да се използва?
WebSocket и XMPP – и двете са предназначени за незабавни съобщения. Кой трябва да изберете обаче въпрос, на който трябва да се отговори след вземане на изискванията на проекта в контекст. Що се отнася до нашето разбиране, препоръчваме да използвате WebSockets, когато трябва да се прехвърлят много данни, а комуникацията трябва да остане отворена.
XMPP е най-добрият избор, когато развитието изисква тонове приставки и сигурността трябва да бъде първокласна. И така, преди да направите избор между тези две, трябва да разберете какви са точно целите ви за развитие. Изработете го предварително и след това изберете съответно протокол. Едно нещо обаче е сигурно, че и двете ще се доставят при номинална производителност, ако се използват правилно.
ЧЗВ
За какво се използва XMPP?
XMPP (Протокол за разширяване на съобщения и присъствие) се използва за комуникация в реално време като незабавни съобщения, гласов и видео чат и информация за присъствието.
За какво е полезно за WebSocket?
WebSocket е добър за уеб приложения в реално време като онлайн игри, чат приложения и платформи за финансова търговия.
Може ли XMPP да се използва с WebSocket?
Да, XMPP може да се използва с WebSocket за подобряване на комуникационните приложения в реално време.
Какви са предимствата на WebSocket над XMPP?
WebSocket има по -ниска латентност, по -добра производителност и може да бъде по -лесна за изпълнение от XMPP.
Може ли WebSocket да се използва за прехвърляне на файлове?
Според официалната спецификация WebSocket не е предназначен за прехвърляне на файлове. Някои разработчици обаче са намерили начини да използват WebSocket за прехвърляне на файлове. Хранилище на GitHub