/Methods/CreateEventSubscription

<< Click to Display Table of Contents >>

Navigation:  API MasterSCADA 4D > Подключение к исполнительной системе по JSON > HTTP API MasterPLC > События и сообщения >

/Methods/CreateEventSubscription

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

HTTP: POST /Methods/CreateEventSubscription

Запрос

{
  "sessionId": 123456789,
  "requestedPublishingInterval": 1000,
  "requestedLifetimeInterval": 300000,
  "maxNotificationsPerPublish": 200,
  "maxSize": 1048576,
  "maxEventsQueue": 20
}

Поля запроса

Поле

Тип

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

По умолчанию

Описание

sessionId

integer

условно

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

requestedPublishingInterval

integer

нет

1000

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

requestedLifetimeInterval

integer

нет

300000

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

maxNotificationsPerPublish

integer

нет

200

Максимум записей recs в одном пакете; 0 также заменяется на 200

maxSize

integer

нет

лимит ответа

Запрошенный предел размера ответа, байт; в текущей реализации не применяется

maxEventsQueue

integer

нет

20

Максимальное число неподтверждённых пакетов в очереди

Ответ

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

Поля ответа

Поле

Тип

Описание

subscriptionId

integer

Идентификатор созданной подписки

revisedPublishingInterval

integer

Сохранённое значение requestedPublishingInterval

revisedLifetimeInterval

integer

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

serverTime

integer

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

code

integer

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

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

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

Таймер активности перезапускают CreateMonitoredEvents, DeleteMonitoredEvents и PublishEvents. RefreshEvents в текущей реализации его не перезапускает.

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

maxSize сохраняется в объекте подписки, но не ограничивает формируемый ответ.

При переполнении maxEventsQueue сервер удаляет самые старые пакеты и накапливает счётчик overflow, который возвращается в PublishEvents.

Числовые параметры не проверяются по диапазону. Для maxEventsQueue необходимо передавать положительное значение: 0 нарушает алгоритм создания пакета, а отрицательное значение фактически отключает ограничение.

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