Понимание архитектуры и дизайна системы WhatsApp

Краткое содержание

Сквозное шифрование WhatsApp может быть не таким защищенным конфиденциальностью, как можно было бы надеяться, несмотря на ее теоретическую безопасность. В этой статье рассматривается архитектура и система системы WhatsApp, проливая свет на ее внутреннюю работу.

Ключевые моменты

1. Roxdavirox/Socket-Whatsapp: Этот коммит не принадлежит ни к какой ветви в этом хранилище и может быть из вилки за пределами репозитория.

2. Имя уже используется: Создание ветви с именем, которое уже существует в качестве тега, может привести к неожиданному поведению. Пользователю предлагается подтвердить создание филиала.

3. Запуск настольного компьютера GitHub: Если ничего не произойдет, пользователю рекомендуется загрузить настольный компьютер GitHub и попробуйте еще раз.

4. Запуск Xcode: Если ничего не произойдет, пользователю рекомендуется загрузить XCode и повторить попытку.

5. Запуск кода Visual Studio: Пользователь сообщил, что их кодовое откроется, как только он будет готов. Если возникла проблема с подготовкой кода, им рекомендуется попробовать еще раз.

6. Последний коммит: Подробная информация о последнем коммите, сделанном в хранилище, отображается.

7. GIT Stats: Представлен обзор статистики GIT для хранилища.

8. Файлы: Информация о файлах в репозитории показана, включая неспособность загрузить последнюю информацию о коммите.

9. ПРОЧТИ МЕНЯ.MD: Краткое описание библиотеки Бейлис, которая является чистым узлом.Реализация 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 – чистый узел.Реализация JS WhatsApp Web API. Это позволяет прямое общение с WhatsApp Web, используя WebSocket, без необходимости в браузере, такого как Selenium.

10. Как можно установить и импортировать Baileys?
Baileys может быть установлен из NPM, используя команду “npm install github: adiwajshing/baileys.«Затем он может быть импортирован в код с помощью« const whatsappweb = require (‘baileys’).”

Личный опыт и рекомендации:

По моему личному опыту, понимание архитектуры и проектирования системы WhatsApp имело решающее значение в разработке приложений, которые интегрируются с платформой. Бейлис, будучи чистым узлом.Реализация JS намного проще взаимодействовать с WhatsApp Web без необходимости инструментов автоматизации браузеров, таких как Selenium. Я настоятельно рекомендую использовать такие библиотеки для тех, кто хочет создать приложения в дополнение к инфраструктуре WhatsApp.

Понимание архитектуры и дизайна системы WhatsApp

В то время как сквозное шифрование может заставить вас чувствовать себя в безопасности в теории. На практике сквозное шифрование является’T как защита конфиденциальности, как можно было бы надеяться.

Roxdavirox/Socket-Whatsapp

Этот коммит не принадлежит ни к какой ветви в этом хранилище и может принадлежать вилке за пределами репозитория.

Переключение ветвей/тегов

Теги ветвей

Не мог загрузить ветви

Нечего показать

Не мог загрузить теги

Нечего показать

Имя уже используется

Тег уже существует с предоставленным названием филиала. Многие команды GIT принимают имена тегов, и ветви, поэтому создание этой ветви может вызвать неожиданное поведение. Вы уверены, что хотите создать эту ветку?

Отменить создание

  • Местный
  • Кодепсы

Https github cli

Используйте GIT или Checkout с SVN, используя веб -URL.

Работать быстро с нашим официальным CLI. Узнайте больше о CLI.

Войдите в обязатель

Пожалуйста, войдите в систему, чтобы использовать Codespaces.

Запуск настольного компьютера GitHub

Если ничего не произойдет, загрузите настольный компьютер GitHub и попробуйте еще раз.

Запуск настольного компьютера GitHub

Если ничего не произойдет, загрузите настольный компьютер GitHub и попробуйте еще раз.

Запуск Xcode

Если ничего не произойдет, загрузите Xcode и попробуйте еще раз.

Запуск кода Visual Studio

Ваше кодовое откроется, как только будет готово.

Была проблема с подготовкой вашего кода, попробуйте еще раз.

Последний коммит

GIT STATS

Файлы

Не удалось загрузить последнюю информацию о коммите.

Последнее сообщение о коммите

Совершить время

ПРОЧТИ МЕНЯ.доктор медицинских наук

Обратно -инженерный WhatsApp Web API в Pure Node.младший. Baileys не требует, чтобы селен или любой другой браузер был интерфейс с WhatsApp Web, он делает это напрямую, используя WebSocket.

Спасибо Sigalor за написание руководства по реверс -инженерии WhatsApp Web и благодаря Rhymen за идти переосмысление.

Baileys очень прост в использовании:

  • Установить из NPM с помощью NPM установить GitHub: Adiwajshing/Baileys
  • Затем импортируйте в свой код, используя

констант Whatsappweb "=" требовать('Baileys') 

позволять клиент "=" новый Whatsappweb() клиент.соединять()

клиент.обработчики.накапливается "=" () =>  / * Когда вы успешно аутентифицированы с веб -серверами WhatsApp */ > 

клиент.обработчики.OnunReadMessage "=" (сообщение) =>  / * Вызывается, когда у вас есть ожидающее непрочитанное сообщение или получите новое сообщение */ > 

клиент.обработчики.Onerror "=" (ошибка) =>  / * вызвано, когда была ошибка */ > 

клиент.обработчики.присутствие "=" (идентификатор, присутствие) =>  / * Вызовите, когда вы получаете обновление о чьем -то присутствии */ > 

клиент.обработчики.Ondisconnect "=" () =>  / * Вызывается, когда Интернет отключается */ > 

клиент.обработчики.OnunReadMessage "=" (м) =>  констант MessageType "=" клиент.getMessageType(м.сообщение) // Получить, какой тип сообщения это - текст, изображение, видео >

клиент.обработчики.OnunReadMessage "=" (м) =>  констант MessageType "=" клиент.getMessageType(м.сообщение) // Получить, какой тип сообщения это - текст, изображение, видео // Если сообщение не является текстовым сообщением если (MessageType !== Whatsappweb.MessageType.текст && MessageType !== Whatsappweb.MessageType.ExtendedText)  клиент.Декодиамессаж(м.сообщение, "имя файла") // расширение применяется автоматически .затем (мета => консоль.бревно(м.ключ.Remotejid + "Отправлено СМИ, спасенные по адресу:" + мета.имя файла)) .ловить (ошибка => консоль.бревно("Ошибка в сообщении декодирования:" + ошибка)) > >

клиент.SendTextMessage(идентификатор, txtmessage) 

Или если вы хотите процитировать другое сообщение:

клиент.SendTextMessage(идентификатор, txtmessage, QuotedMessage) 

клиент.Sendmediamessage(идентификатор, Mediabuffer, MediaType, Информация)

  • Миниатюра может быть сгенерирована автоматически для изображений и наклеек.
  • MediaBuffer – это просто буфер, содержащий содержимое медиа, которые вы хотите отправить
  • MediaType представляет тип сообщения, которое вы отправляете. Это может быть одно из следующих действий:

[ Whatsappweb.MessageType.изображение, // сообщение изображения Whatsappweb.MessageType.видео, // видеообращение Whatsappweb.MessageType.аудио, // аудио сообщение Whatsappweb.MessageType.наклейка // сообщение наклеек ]

Информация "="  подпись: "привет!", // подпись для отправки со СМИ (хотя не может быть отправлено с наклейками), хотя) Миниатюра: нулевой, /* Должен быть кодированный JPEG базовой 64, если вы хотите отправить пользовательский большой палец, или установить на NULL, если вы не хотите отправлять миниатюру. Не вводите это поле, если вы хотите автоматически генерировать большой палец */ Миметип: "Приложение/PDF", /* Укажите тип носителя (необязательно для всех типов мультимедиа, кроме документов), для PDF files => установить в "Application/PDF", Для txt files => установить в "Application/txt" и т. д. */ гифка: истинный // Применимо только к видео сообщениям, если видео следует рассматривать как GIF >

клиент.SendReadReceipt(идентификатор, MessageId) 

клиент.Обновленное предложение(идентификатор, присутствие) 

Это позволяет человеку с удостоверением личности знать ваш статус. где присутствие может быть одним из следующих действий:

статический Присутствие "="  доступный: "доступный", // "В сети" недоступен: "недоступен", // не в сети сочинение: "Сопровождение", // "Типинг. " запись: "Запись", // "Запись. " остановившись: "Приостановил" // Я понятия не имею >

констант Authjson "=" клиент.BASE64ENCODEDAUTHINFO() 

констант Authjson "=" Json.разбор( фс.readfilesync("Auth_Info.json ") ) клиент.авторизоваться(Authjson)

клиент.isonwhatsapp ("[CountryCode] [some10digitnumber] @s.WhatsApp.сеть") .затем ((существует, идентификатор) =>  если (существует)  консоль.бревно(идентификатор + "На WhatsApp") > еще  консоль.бревно(идентификатор + "Не на WhatsApp :(") > >)

Проверьте и запустите пример.JS, чтобы увидеть пример использования всех этих функций. Чтобы запустить пример сценария, загрузить или клонировать репо, а затем введите следующее в терминале:

  1. CD PATH/TO/BAILEYS/Пример
  2. пример узела.младший

Я никоим образом не связан с WhatsApp. Это было написано в образовательных целях. Используйте по своему усмотрению.

Понимание архитектуры и дизайна системы WhatsApp

Вы когда -нибудь задумывались, как работает WhatsApp? Мы’VE изучал проектирование и архитектуру системы высокого уровня WhatsApp’S Технология. Погрузитесь, чтобы увидеть то, что мы узнали.

Тег типа контента

Оглавление

В каком приложении более 2.5 миллиардов активных пользователей, более 5 миллиардов загрузок и наиболее популярное приложение в более чем 100 странах?

Подсказка: проверьте заголовок статьи.

Да, это’S верно. WhatsApp – самая популярная услуга обмена сообщениями в мире. По словам Марка Цукерберга, более 100 миллиардов сообщений отправляются по WhatsApp каждый день.

С таким почти астрономическим трафиком можно’Помогите, но задаюсь вопросом, как работает WhatsApp – его дизайн системы, архитектура сервера, технология . Как он обрабатывает так много одновременных пользователей и сообщений? Какие рамки и языки программирования позволяют такого рода масштаб? Как они сохраняют все эти данные безопасными? Так много вопросов!

В этой статье мы собираемся глубоко погрузиться в WhatsApp’S Архитектура и дизайн системы. Мы’ответьте на все вышеупомянутые вопросы и многое другое.
Если вы’когда -либо задумывался о лучшей собаке в мире приложений чата, продолжайте читать.

Отказ от ответственности: Мы просыпали Интернет, чтобы собрать каждый ресурс по дизайну архитектуры WhatsApp, и собрали и суммировали его здесь. Насколько нам известно, эта информация точна. Однако, поскольку компании часто обновляют свой технический стек, эта информация может быть изменена.

Технологический стек WhatsApp

Позволять’S начните с фронта и пробежьте дорогу к оборудованию на бэкэнд.

Первая часть дизайна системы WhatsApp, с которой взаимодействует пользователь, – это мобильное или веб -приложение. WhatsApp поддерживает почти все платформы. У него есть приложение для iOS, приложение для Android, настольное приложение, веб -приложение и приложение Windows Phone. До 2017 года вы можете даже использовать WhatsApp на Blackberry.

С таким большим количеством поддерживаемых платформ вы, возможно, догадались, что WhatsApp будет гибридным приложением. Но на самом деле это’S не. Они фактически создали нативное приложение для каждой платформы. Вот список всех поддерживаемых платформ с фронтальными языками, которые использовались для построения каждого из них:

Как магазины WhatsApp чат локально

В дополнение к самому языку программирования еще одна важная технология, которую WhatsApp использует на Frontend, – это база данных SQLite. SQLite-это отдельная, автономная, реляционная база данных, которая предназначена для приложений, что означает, что она живет на вашем устройстве. WhatsApp использует его для хранения разговоров. Поскольку было бы пустой тратой ресурсов для загрузки всех сообщений из облака каждый раз, когда вы открываете приложение, WhatsApp выбирает для хранения сообщений локально. На самом деле, WhatsApp хранит только сообщения, пока они не будут получены, после чего их удаляют.

Какие протоколы обмена сообщениями используют WhatsApp?

WhatsApp использует очень измененную версию XMPP на сервере Ejabberd (подробнее об этом позже) для связи с клиентами.

XMPP на клиенте открывает сокет SSL на серверы WhatsApp. Все отправленные сообщения будут в очереди на серверах до тех пор, пока клиент не откроется или не подключается к этому розетку, чтобы получить сообщения. Как только клиент успешно извлекается сообщение, статус успеха отправляется обратно на сервер WhatsApp. Затем сервер пересылает этот статус исходному отправителю; дать им понять, что сообщение было получено путем добавления “галочка” Значок рядом с успешным отправленным сообщением.

Имейте в виду, что, хотя XMPP является одним из самых популярных протоколов обмена сообщениями для приложений для чата, это определенно не единственный вариант для выбора протокола обмена сообщениями.

Технология шифрования WhatsApp

WhatsApp использует сквозное шифрование. В идеале это означает, что только оригинальный отправитель и истинный получатель сообщения могут прочитать сообщение в простом тексте.

Когда вы отправляете сообщение, оно зашифруется, используя конкретный протокол шифрования (подробнее об этом следующем). WhatsApp затем хранит это зашифрованное сообщение на своих серверах, пока оно’S доставлен к получателю. После доставки устройство получателя расшифровывает сообщение обратно в читаемое открытое сообщение с использованием уникального криптографического ключа. На протяжении всего этого процесса WhatsApp никогда не знает содержания вашего сообщения.

WhatsApp’Технология шифрования S называется протоколом шифрования сигналов, которая была разработана с помощью Specing Shispers для современного протокола с открытым исходным кодом, сильного протокола шифрования для асинхронных систем обмена сообщениями.

В то время как сквозное шифрование может заставить вас чувствовать себя в безопасности в теории. На практике сквозное шифрование является’T как защита конфиденциальности, как можно было бы надеяться.

Технологический стек WhatsApp

Позволять’S перейти к бэкэнду.

Насколько нам известно, текущий дизайн системы WhatsApp Back-End выглядит следующим образом:

  • Эрланг является основным языком программирования
  • FreeBSD Операционная система
  • Эджабберд это сервер приложений XMPP
  • ЛУЧ виртуальная машина на базе Erlang
  • Мнезия их база данных на основе Erlang
  • YAWS – это их мультимедийный веб -сервер

Позволять’S изучите некоторые из наиболее интересных аспектов WhatsApp’S Бэк-энда архитектура:

Эрланг

Выбор языка программирования WhatsApp в значительной степени, что позволяет ему работать в таком колоссальном масштабе.

Erlang – это функциональный язык программирования, ориентированный на создание одновременных, масштабируемых и надежных систем. Он использует модель на основе процессов, называемая “актер модель” в которых маленькие изолированные процессы общаются друг с другом через сообщения. Эти процессы могут создавать новые процессы, отправлять сообщения и изменять свое состояние в ответ на получение сообщений.

Его свойство, основанное на процессах, дает Erlang его чрезвычайно высокую параллелизм, масштабируемость и надежность.

Эти процессы могут также общаться с процессами вне ядра, на котором он работает. Это позволяет легко масштабировать систему горизонтально (добавляя больше машин) или вертикально (добавляя больше ядер). Наконец, поскольку процессы могут общаться друг с другом и, что более важно, перезагрузить друг друга, это’Легко создавать системы самовосстановления. Если ошибка сбоя в процесс, другой процесс может его перезагрузить.

FreeBSD

Интересным техническим выбором основателей WhatsApp был выбор FreeBSD в качестве операционной системы вместо более широко используемой системы (например, Linux).

Брайан Актон, один из соучредителей WhatsApp, сказал это в интервью Wired о решении:

“Linux – зверь сложности. FreeBSD имеет преимущество в том, что он является единственным распределением с необычайно хорошей коллекцией портов.”

Кроме того, когда дело доходит до необработанной производительности, особенно в отношении системной нагрузки на пакет, ни одна другая операционная система не может превзойти Freebsd.

Однако, когда дело доходит до этого, настоящая причина, по которой они решили использовать FreeBSD, вероятно, потому что оба соучредителя имели долгую историю работы с ним в Yahoo!.

Эджабберд

Ejabberd-это сервер XMPP с открытым исходным кодом, который написан в Erlang. WhatsApp использует модифицированную версию XMPP в качестве его протокола для обработки доставки сообщений. Даже сервер Ejabberd, который использует WhatsApp, в значительной степени настроен для оптимизации для производительности сервера.

Что’S Цель Ejabberd?

Что ж, он обрабатывает маршрутизацию, доставку сообщений и общие аспекты обмена мгновенными сообщениями приложения. Особенности Ejabberd включают:

  • Один на один обмен сообщениями
  • Групповой чат
  • Хранение и пересылка автономных сообщений
  • Список контактов и присутствие

Мнезия

Для хранения данных и временных сообщений WhatsApp использует распределенную СУБД на основе Эрланг (система управления базами данных) под названием Mnesia. Этот СУБД обеспечивает преимущества, которые не надевают многие традиционные базы данных’t такие как:

  • В реальном времени ключ/поиск значений
  • Высокая терпимость разлома
  • Динамическая реконфигурация
  • Сложные объекты

Мнезия также единственная СУБД, которая’S написано в Erlang. Это само по себе является преимуществом, потому что нет различий в структуре данных между Erlang в приложении и Erlang в СУБД. Кодирование, следовательно, быстрее и более явное.

ЛУЧ

Пучка, коротко “Богдан’Srlang Abstract Machine”, виртуальная машина, которая компилирует и выполняет исходный код Erlang. Луч разработан специально для очень параллельных приложений – идеально подходит для WhatsApp’S вариант использования. ЛУЧ’Секретный соус-это легкие процессы, которые надевают’T поделитесь памятью и управляются планировщиками. Этими планировщиками могут управлять миллионами процессов по нескольким ядрам. Это делает луч очень масштабируемым и устойчивым к сбоям, например, вызванным высоким нагрузкой на трафик, обновлениями систем и отключениями сети.

Луч настолько важен для дизайна системы WhatsApp, что команда WhatsApp опубликовала множество исправлений и исправлений в основном исходном коде.

Яв

YAWS (еще один веб-сервер)-это веб-сервер на основе Erlang, который идеально подходит для динамического контента. WhatsApp использует YAW для хранения мультимедийных данных. Сам по себе YAWS использует веб-сайты HTML5, которые упрощают двустороннюю связь, установив надежное и быстрое соединение между сервером и приложением. Благодаря использованию этой технологии, WhatsApp может отправлять и получать мультимедийные данные на миллиардах устройств – почти в реальном времени.

WhatsApp аппаратные компоненты

В 2017 году, через четыре года после приобретения Facebook, WhatsApp был снят с IBM Softlayer’S Cloud и привезен в Facebook’Собственные центры обработки данных.

Мы знаем, что в 2014 году WhatsApp требовалось около 550 серверов и более 11 000 ядер, которые управляли Erlang. Мы также знаем, что WhatsApp’S Пользовательская база была «всего» около полумиллиарда в 2014 году по сравнению с более чем 2 миллиардами пользователей, которых она достигла в 2020 году. Итак, имея в виду эти данные, мы позволим вам представить, сколько серверов и ядер WhatsApp сейчас требуется. Мы представляем, что это много.

Диаграмма архитектуры WhatsApp

Диаграмма архитектуры WhatsApp

Самый простой способ получить полное понимание WhatsApp’S Architecture Design, конечно, через диаграмму архитектуры WhatsApp.

Начиная с левой стороны, у нас есть несколько разных клиентов (мобильные и веб -приложения), каждая из которых размещает локальную базу данных SQLite для хранения разговоров.

Клиенты используют HTTP Websockets для отправки и получения мультимедийных данных, таких как изображения и видео с веб -сервера YAWS. Но, как вы можете видеть, XMPP используется для фактической отправки этих файлов и других сообщений другим пользователям.

Когда отправляется сообщение XMPP, оно проходит через серию шагов, изображенных выше. Во -первых, он отправляется в WhatsApp’S Custom Ejabberd Server, который работает на Beam и FreeBSD. Сервер Ejabberd сохраняет сообщение в таблице базы данных Mnesia, где он попадает в очередь. Когда принимающий пользователь открывает приложение, тем самым воссоединяясь с сокетом, сообщение в очереди направляется через сервер Ejabberd и доставляется получателю. После успешной доставки может быть подтверждена, сообщение удаляется из базы данных Mnesia.

Заключение

Пока мы не надеемся’Знайте точные спецификации WhatsApp’S Техническая архитектура и дизайн системы мы можем получить хорошую идею на основе технологий, которые использует WhatsApp. Мы надеемся, что эта статья, изучающая дизайн архитектуры WhatsApp, ответила на ваши жгучие вопросы. Теперь, когда вы получили представление о том, как работает сервер WhatsApp, узнал, как выглядит технический стек WhatsApp, и даже отсканировал диаграмму архитектуры WhatsApp. Может быть, вы чувствуете себя уполномоченным принять свой собственный проект приложения для чата.

Если вы’По.

Но имейте в виду, что многие технологии в технологическом стеке WhatsApp были специально выбраны для их способности масштабировать и справляться с чрезвычайно высоким параллелизмом.

Если вы’Попытка построить приложение для знакомств или телемедицину (или что -либо, что не делает’В то же время не нужно, чтобы почти весь мир был в сети), вам может не понадобиться количество масштабов, которое делает WhatsApp.

Другими словами, технический стек WhatsApp, хотя и идеально подходит для WhatsApp, может быть не лучшим решением для вас. Чтобы узнать о идеальной архитектуре и техническом стеке для приложения чата, перейдите в эту статью.

Если у вас все еще есть вопросы о том, что подходит вам, не стесняйтесь поговорить с нашими экспертами и прежде чем начать создавать собственное приложение чата.

Просто голоден для большего? Вот еще несколько отличных ресурсов, чтобы погрузиться в:

  • Миф о сквозном шифровании в приложениях обмена сообщениями
  • Понимание архитектуры и проектирования системы приложения чата
  • 11 Глупая ошибка, разработчики, при создании приложения чата

об авторе

Cosette Cressler-это страстный маркетолог контента, специализирующийся на SaaS, технологии, карьере, производительности, предпринимательстве и саморазвитии. Она помогает развивать предприятия всех размеров, создавая последовательный, усваиваемый контент, который привлекает внимание и движет действием.

Использует ли WhatsApp розетка

Охто

Мы аррегировали подоаджолгн. SpoMOщHщ эtOй straoniцы mы smosememememopredetath, чto -aprosы otpra. То, что нужно?

Эta -steraniцa otobrana -overshy -aTeх -stuчah -obra -aTeх -stu -y -y -ogdaTomAtiчeskymi -stri -stri -rah -strhe -strhe -strhe -stri -stri -stri -stri -stri -stri -rah -rah -stristriouri Котора. Straoniцa -oprepaneTeTeTeTeTOTOTOTO -opobrasthep -apoSle -o, kak -эat. ДО СОМОМОНТА.

Иошнико -а -а -а -в -впологовый схлк -а -апросов. Esli-yspolheoute obhщiй dostup-vanterneTTHETHETHETHETHET,. Охраторс. Подеб.

Проверка, в котором я, eSli -voAchephephephephe -yvodyte -sloжne -apro Эмами, Или,.

XMPP vs WebSocket – который для использования для приложений?

XMPP VS WebSocket - Что использовать для приложений?

При создании отзывчивого и высокого уровня, богатого функциями приложения мгновенного обмена сообщениями (IM) с нуля, является вашей целью, наиболее важна частью: выяснить оптимальный протокол для обмена сообщениями. Предлагаемый выбор (оба из них) объясняются за несколько минут.

Чтобы сказать это ясно, мы попытались дать существенные знания о протоколе XMPP против WebSocket через этот пост для вас. Известные своими особыми особенностями и объектами, эти два протокола IM могут проложить путь для улучшения мгновенной связи, когда мы продвигаемся вперед во времени. Однако это’S нелегко выбрать, так как один простой имеет различные преимущества и ограничения.

Цели обучения

Подписаться на последние новости

Мухаддин Бешков

Проверенный эксперт

20+ лет ИТ -экспертиза в области разработки системы, анализа безопасности, архитектуры решений. Опытный в ОС (Windows, Linux, Unix), программирование (C ++, Python, HTML/CSS/JS, Bash), DB (MySQL, Oracle, MongoDB, PostgreSQL). Квалифицированные в сценариях (PowerShell, Python), DevOps (микросервисы, контейнеры, CI/CD), веб -разработка (узел.JS, React, Angular). Успешный послужной список в управлении ИТ -системами.

Определение

XMPP – все о протоколе

Используется для обмена фрагментами XML B/W The Server-Client Duo, XMPP является одним из ранних открытых протоколов, касающихся связи. У него долгая история более 20 лет. Его эффективная реализация требует обязательного использования подходящего транспортного привязки.

В модели OSI XMPP в основном функционирует на слое приложения, который разрабатывает структурный рисунок XML (его частей или синтаксиса). Для передачи/реле необходимы транспортные слои’ протоколы’ (Http или tcp) помощь.

энИкснапряженный Мэссе и ппроживание пРотокол, в основном, используется в разработках, которые включают в себя приложения чата, приложения с такими удобствами, как голосовые/видеозвонки, мгновенная отправка текста/богатых средств и многопартийные видеозвонки.

Прямая общение клиента-клиента

Плюс

С XMPP у вас есть несколько преимуществ, которые можно наслаждаться, когда вы разрабатываете приложение для IM. Например:

  • Его функции кибербезопасности достаточно продвинуты, чтобы ввести опасности в цифровом мире в страхе.
  • Децентрализованная архитектура гарантирует, что она доступна для всех.
  • Предлагаемая техническая поддержка является надежной и эффективной.
  • Он гибкий и давайте давайте конечными пользователями вносят изменения в процесс передачи данных в соответствии с необходимостью проекта.
  • Это помогает установить постоянную (постоянную) связь.
  • Он упрощает связь B/W серверы, позволяя разнообразным архитектурам передавать данные.
  • Он сразу же реагирует на присутствие конечного пользователя. Следовательно, вы’сможет узнать, является ли конечный пользователь в Интернете или офлайн.

Минусы

Даже если XMPP предоставляет несколько преимуществ, это не безупречно. Есть определенные очевидные недостатки или минусы этого протокола.

  • Ему не хватает механизма QoS
  • Текстовая потоковая передача или связь XML увеличивает эксплуатационные накладные расходы
  • Транспорт контента часто происходит без какого -либо синхронизации
  • Иногда присутствие и/или мгновенные сообщения могут вызвать перегрузку сервера

WebSocket – все о протоколе

Это’S A A Sodern-эпоха IM Protocol, разрешение бинарных и текстовых данных’S-и-Fro Flow для сервера-клиента в любом постоянном канале.

Это’Сделка, полнодуплексная и государственная по своей природе. Это’S в основном используется для мобильного приложения, которому требуется постоянное соединение. Это не имеет ничего общего с определением природы и типа данных в. Ему нужна поддержка других протоколов, чтобы полностью реализовать способность IM в приложении чата.

Плюс

WebSocket разработан для заполнения пробела, который технология на основе HTTP, созданная при передаче данных. Со временем было замечено, что это было больше, чем это. Посмотрите на ключевые преимущества, чтобы насладиться веб -билетами.

  • Он продолжает общение, если сервер или клиент не остановит его
  • Вряд ли есть совпадение с WebSocket, когда дело доходит до скорости. Он может передавать данные быстрее, чем AJAX и HTTP
  • Он может сделать передачу данных между возможными серверами происхождения
  • Он совместим с несколькими видами платформ, такими как мобильные, веб -и настольные компьютеры
  • Использование WebSockets является экономически эффективным, поскольку он только получает 2-байтовые расходы
  • Это эффективно решает долгую проблему опроса

Минусы

Несмотря на преимущества, у Websocket есть некоторые потенциальные недостатки, которые стоит отметить. Например:

  • Это работает только тогда, когда у вас есть полностью соответствующий браузер HTML 5
  • Ему не хватает механизма успеха AJAX
  • Невозможно кэширование посредника или края
  • Когда WebSocket вступает в действие, разработчикам будет трудно реализовать даже самые простые статусы HTTP

Сравнение протоколов

После более глубокого понимания основного значения этих двух протоколов, это’Время перейти к подробному сравнению XMPP V/S WebSocket. Мы отобрали несколько наиболее важных аспектов, а затем сравнили предложения этих двух.

Краткая оценка безопасности этих двух протоколов имеет решающее значение, так как использование необеспеченного протокола приведет к тому, что все подвергается риску. XMPP-это протокол с приготовлением времени и пережил множественные изменения и улучшения на протяжении всех лет активации. По мере изменения требований безопасности протокол улучшает свою фронт безопасности. Он поставляется с различными уровнями безопасности и функциями.

Когда XMPP активируется, личная идентичность является обязательной. И сообщения, и хосты должны быть аутентифицированы, прежде чем стать частью общения, чтобы избежать риска подделки. Хотя этого было достаточно, чтобы контролировать спам -угрозы под контролем,

XMPP даже позволяет конечным пользователям добавлять слои безопасности в соответствии с потребностями часа.

Когда дело доходит до шифрования, XMPP предлагает два типа. Первое шифрование возникает, когда устанавливается соединение, и ее аутентификация начинается. Это шифрование завершается с помощью SASL. Как только соединение будет успешно создано, связь с клиентом-сервером затем поддерживается шифрованием TLS.

Если WebSocket’S Обследование безопасности тщательно изучает, вы сможете узнать, что оно требует немного улучшения. Это’S очень молодой протокол и требует большего улучшения и обновлений, чтобы соответствовать тому, что предлагает XMPP. Но это не’это означает, что ему не хватает безопасности. Он предлагает шифрование, достаточно сильное, чтобы сохранить какое -либо злонамеренное вторжение в страхе.

Основная оперативная архитектура XMPP децентрализована, в то время как Webockets следует централизованной архитектуре. XMPP основан на модели клиента-сервер и предотвращает прямое взаимодействие между клиентами. Веб -питания воспользуются API и гарантируйте, что клиент и сервер непрерывно общаются.

  1. Совместимость с другими протоколами

XMPP является примитивным протоколом и не имеет совместимости API. С другой стороны, WebSocket очень оптимизирован API, который является ядром лучшей совместимости с другими протоколами.

  1. Отправка и получение бинарных данных

В веб -сайте общение включает в себя использование кодов и сообщений, освобождение пользователей от проблем с анализом и буферизацией. Это делает передачу данных быстро. XMPP следует по очень тонкому пути для передачи бинарных данных, что делает все громоздким.

WebSocket сделка с транспортным слоем’S расширяемость, в то время как XMPP связан с уровнем приложения’S расширяемость. Это’Возможно добавить более 40 протоколов по веб -окетам. Но XMPP’T, гибкий.

Несмотря на то, что оба полезны для передачи данных в режиме реального времени со скоростью Blazing, WebSocket превосходит XMPP на этом фронте из-за его централизованной природы и постоянной связи. XMPP принудительно аутентификация и авторизация как сервера, так и клиента немного замедляет свою производительность.

Сравнение протоколов

Примеры использования XMPP и WebSocket

XMPP используется в приложениях WhatsApp, GTALK и GRINDR и встроенных в функции чата. Чтобы быть конкретным, протокол в основном предпочтительнее, если общая связь с одним к одному или группе является основной особенностью приложения.

Trello, Slack и Discord – это три самых известных приложения, созданных с использованием веб -билетов. Как мы знаем, эти заявления предназначены для команд и удаленных работников. В заключение, протокол более полезен для ограниченных виртуальных рабочих пространств, поскольку он использует постоянное соединение.

Вывод – какой протокол использовать?

WebSocket и XMPP – оба предназначены для обмена мгновенными сообщениями. Однако, какой из них вы должны выбрать, является вопросом, на который следует ответить после принятия требований проекта в контекст. Что касается нашего понимания, мы рекомендуем использовать WebSockets, когда необходимо перенести много данных, и общение должно оставаться открытым.

XMPP-лучший выбор, который нужно сделать, когда разработка требует тонны плагинов, а безопасность должна быть первоклассным. Итак, прежде чем сделать выбор между этими двумя, вам нужно выяснить, каковы ваши цели развития. Выпустить это заранее, а затем выберите протокол соответственно. Тем не менее, одна вещь уверена.

Часто задаваемые вопросы

Для чего используется XMPP?

XMPP (протокол обмена сообщениями и присутствием) используется для общения в реальном времени, таких как мгновенные сообщения, голос и видеочат, и информация о присутствии.

Что подходит для WebSocket для?

WebSocket хорош для веб-приложений в реальном времени, таких как онлайн-игры, приложения для чата и платформы финансовой торговли.

Можно ли использовать XMPP с WebSocket?

Да, XMPP можно использовать с WebSocket для улучшения связи в реальном времени.

Каковы преимущества WebSocket по сравнению с XMPP?

WebSocket имеет более низкую задержку, лучшую производительность и может быть проще в реализации, чем XMPP.

Можно ли использовать WebSocket для передачи файлов?

Согласно официальной спецификации, WebSocket не предназначен для передачи файлов. Тем не менее, некоторые разработчики нашли способы использовать WebSocket для передачи файлов. Репозиторий GitHub