|
<< 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, может обратиться к ней.