Matrix (протокол)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Matrix — це відкритий протокол для спілкування у реальному часі. Основною метою створення є досягнення високої інтероперабельності, подібної до стандартних протоколів типу SMTP. З технічної точки зору — це протокол прикладного рівня, федеративного типу, що дозволяє обмінюватися повідомленнями у реальному часі між окремими серверами.[1][2]

Повідомлення у JSON форматі поширюються серед федерації публічних серверів. Протокол також інтегрується з веб-сервісами за допомогою WebRTC та забезпечує можливість здійснення відео-дзвінка, VoIP та онлайн чату.

Подібними ініціативами є протоколи XMPP та IRCv3.[3]

Розробка[ред. | ред. код]

Основне коло розробників працює у неприбутковій організації Matrix.org, що базується у Великій Британії.[4] Метою організації є створення відкритого, децентралізованого, стійкого протоколу з високою інтероперабельністю для комунікації у інтернеті. Типове застосування: відеотелефонія, VoIP, швидкий обмін повідомленнями, IoT, синхронізація даних.

Огляд[ред. | ред. код]

Платформа для організації децентралізованих комунікацій Matrix розвивається як проект, який використовує відкриті стандарти і приділяє велику увагу забезпеченню безпеки і приватності користувачів. В якості транспорту застосовується HTTPS+JSON з можливістю використання WebSockets або протоколу на базі CoAP + Noise. Система формується як співдружність серверів, які можуть взаємодіяти між собою і об'єднуються у загальну децентралізовану мережу. Повідомлення реплікуються по всіх серверів, до яких підключені учасники обміну повідомленнями. Повідомлення поширюються по серверам по аналогії з тим, як коміти поширюються між Git-репозиторіями. У разі тимчасового відключення сервера повідомлення не втрачаються, а передаються користувачам після відновлення роботи сервера. Підтримуються різні варіанти ідентифікаторів користувача, включаючи email, номер телефону, обліковий запис в Facebook тощо.

У мережі відсутня єдина точка відмови або контролю за повідомленнями. Всі сервери, які охоплює обговорення, рівноправні між собою. Будь-який користувач може запустити власний сервер і підключити його до загальної мережі. Можливе створення шлюзів для взаємодії Matrix з системами на базі інших протоколів, наприклад, підготовлені сервіси для двосторонньої відправки повідомлень в IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp і Slack.

Крім миттєвого обміну текстовими повідомленнями і організації чатів, система може використовуватися для передачі файлів, відправки повідомлень, організації телеконференцій, здійснення голосових і відео-дзвінків. Matrix дозволяє використовувати пошук і необмежений перегляд історії листування. Підтримуються також такі розширені можливості як повідомлення про набір тексту, оцінка присутності користувача в онлайн, підтвердження прочитання, push-повідомлення, пошук на стороні сервера, синхронізація історії та стану клієнтів.

Протокол[ред. | ред. код]

Специфікація Matrix окреслює RESTful HTTP APIs для захищеної передачі та реплікації даних формату JSON між сумісними серверами, клієнтами та сервісами. Дані підписані у стилі git для усунення можливості підміни. Механізм реплікації відповідає моделі узгодженості в кінцевому рахунку, що дозволяє відновити повідомлення через повторну синхронізацію з інших серверів.

Клієнти[ред. | ред. код]

Riot.im офіційний клієнт, є зразком для інших втілень. Для середовищ GNOME є офіційний клієнт Fractal. Також існує багато інших клієнтів, ботів, мостів, серверів та інших реалізацій протоколу Matrix.

Посилання[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Matrix: a new specification for federated realtime chat [LWN.net]. lwn.net. Процитовано 2018-05-27. 
  2. Matrix.org Reloads Inside "Illusion of Control" Vortex. Dr. Dobb's. Архів оригіналу за 2019-03-29. Процитовано 2018-05-27. 
  3. Weinberger, Matt. Matrix wants to smash the walled gardens of messaging. ITworld (en). Процитовано 2018-05-27. 
  4. Matrix | Crunchbase. Crunchbase (en). Процитовано 2018-05-27.