Distributed Data Protocol
Distributed Data Protocol или DDP (протокол распределенных данных) - протокол клиент-серверного взаимодействия, созданный для использования инфраструктурой JavaScript веб-платформы Meteor и использующий в качестве обмена сообщениями шаблон «издатель — подписчик».
Спецификация DDP находится в открытом доступе на GitHub[1]
Основные механизмы протокола
[править | править код]Установка соединения
[править | править код]- Клиент отправляет сообщение
connect. - Если сервер поддерживает версию протокола, переданную в сообщении
connect, клиенту отправляется сообщениеconnected. - Иначе, сервер отправляет сообщение
failedс указанием поддерживаемой версией протокола DDP.
Ping-Pong
[править | править код]В любое время после установки соединения одна из сторон может отправить сообщение ping . Получив сообщение, вторая сторона должна ответить pong .
Работа с данными
[править | править код]- Клиентское приложение отправляет на сервер сообщение
sub, содержащее интересующую его информацию. - В любое время (чаще всего ответом на
sub) сервер может отправить клиенту данные с одним из трех типов:addedозначает, что данные были добавлены.changedпоказывает, что некоторые поля были изменены, или удалены.removed- данные были удалены
Удаленные вызовы процедур
[править | править код]- Клиент отправляет на сервер сообщение
methodс названием процедуры и параметрами - Сервер в ответ посылает сообщение
result, содержащее результат выполнения процедуры или описание ошибки. - Вызов процедуры может влиять на данные, на которые подписаны клиенты. В таком случае, после отправки клиентам результатов выполнения процедуры, сервер должен отправить клиентам сообщение
updatedс указаниемidизмененных данных.
Поддерживаемые методы передачи данных
[править | править код]Стандартным способом передачи данных через DDP является передача EJSON через веб-сокеты. Вторым вариантом является использование Long Poll.
В случае, если браузер не поддерживает веб-сокеты, передача данных будет осуществляться с использованием Long Poll.
Примечания
[править | править код]- ↑ DDP Specification (англ.). — 2016-12-20. Архивировано 2 октября 2019 года.