/Methods/CreateDataSubscription

<< Click to Display Table of Contents >>

Navigation:  API MasterSCADA 4D > Подключение к исполнительной системе по JSON > HTTP API MasterPLC > Получение данных >

/Methods/CreateDataSubscription

Создаёт пустую подписку и возвращает её subscriptionId. Параметры добавляются отдельным вызовом CreateMonitoredDataItems.

HTTP: POST /Methods/CreateDataSubscription

Запрос

{
  "sessionId": 123456789,
  "requestedPublishingInterval": 1000,
  "requestedLifetimeInterval": 60000,
  "maxNotificationsPerPublish": 100,
  "maxSize": 1048576
}

Поля запроса

Поле

Тип

Обязательное

По умолчанию

Описание

sessionId

integer

условно

Нужен, если сессия не передана заголовком Session-Id

requestedPublishingInterval

integer

нет

1000

Запрошенный период публикации, мс

requestedLifetimeInterval

integer

нет

60000

Допустимое время без обращений к подписке, мс; значение 0 заменяется на 60000

maxNotificationsPerPublish

integer

нет

0

Максимум записей в одном пакете; при 0 сервер вычисляет лимит из допустимого размера ответа

maxSize

integer

нет

лимит ответа

Запрошенный предел размера ответа PublishData, байт

Ответ

{
  "subscriptionId": 1,
  "revisedPublishingInterval": 1000,
  "revisedLifetimeInterval": 60000,
  "serverTime": 1710000000123,
  "code": 0
}

Поля ответа

Поле

Тип

Описание

subscriptionId

integer

Идентификатор созданной подписки; используется во всех следующих вызовах

revisedPublishingInterval

integer

Принятый сервером период публикации, мс

revisedLifetimeInterval

integer

Принятый сервером период неактивности, мс

serverTime

integer

Время сервера, Unix time в миллисекундах

code

integer

0 при успешном создании

Поведение и ограничения

Неактивные подписки проверяются раз в 10 секунд, поэтому фактическое удаление может произойти позднее revisedLifetimeInterval, но не более чем примерно на один период проверки.

В текущей реализации requestedPublishingInterval сохраняется и возвращается клиенту, но не запускает серверный таймер публикации: частоту вызовов PublishData задаёт клиент.

maxSize сохраняется в подписке, но при формировании ответа PublishData пока не используется.

Диапазоны числовых настроек подписки не проверяются; клиент должен передавать неотрицательные значения.

Подписка хранится в памяти процесса и не привязана к создавшей её HTTP-сессии. Текущая реализация разрешает обратиться к ней из другой действующей сессии, если известен subscriptionId.

При резервном состоянии контроллера метод возвращает OpcUa_BadShutdown.