/Methods/PublishEvents

<< Click to Display Table of Contents >>

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

/Methods/PublishEvents

Возвращает один накопленный пакет уведомлений. Клиент подтверждает обработанный пакет через ackSequenceNumber и повторяет запрос, пока hasMore не станет равным false.

HTTP: POST /Methods/PublishEvents

Запрос

{
  "sessionId": 123456789,
  "subscriptionId": 1,
  "ackSequenceNumber": 0
}

Поля запроса

Поле

Тип

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

По умолчанию

Описание

sessionId

integer

условно

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

subscriptionId

integer

да

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

ackSequenceNumber

integer

нет

0

Последний полностью обработанный клиентом номер пакета

Ответ с данными

{
  "subscriptionId": 1,
  "sequenceNumber": 1,
  "recs": [
    {
      "clientHandle": 101,
      "recType": "Update",
      "fields": [
        "12A5EDFFFFFF",
        1710000000000,
        "Превышение уставки",
        100,
        false
      ]
    }
  ],
  "deleted": [
    {
      "clientHandle": 101,
      "eventIds": ["7623423AA"]
    }
  ],
  "hasMore": false,
  "serverTime": 1710000000123,
  "code": 0
}

Если пакетов нет, поля sequenceNumber, recs и deleted отсутствуют:

{
  "subscriptionId": 1,
  "hasMore": false,
  "serverTime": 1710000000123,
  "code": 0
}

После потери старых пакетов дополнительно возвращается накопленный счётчик:

{
  "subscriptionId": 1,
  "hasMore": false,
  "overflow": 3,
  "serverTime": 1710000000123,
  "code": 0
}

Поля ответа

Поле

Тип

Условие

Описание

subscriptionId

integer

всегда

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

sequenceNumber

integer

есть пакет

Номер возвращаемого пакета

recs

array

есть пакет

Уведомления; массив присутствует и для пакета, содержащего только удаления

recs[].clientHandle

integer

всегда в записи

Идентификатор выборки на стороне клиента

recs[].recType

string

всегда в записи

Update, Refresh или UpdateArchive

recs[].fields

array

всегда в записи

Значения в порядке items[].fields из CreateMonitoredEvents

deleted

array

пакет содержит удаления

События, которые раньше проходили фильтр, а теперь не проходят

deleted[].clientHandle

integer

всегда в группе

Выборка, из которой нужно удалить события

deleted[].eventIds

array of string

всегда в группе

Идентификаторы удаляемых событий

hasMore

boolean

всегда

true, если после возвращённого пакета в очереди есть следующий

overflow

integer

были потеряны пакеты

Накопленное число пакетов, удалённых из-за maxEventsQueue

serverTime

integer

всегда

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

code

integer

всегда

Общий результат публикации

Элементы fields могут быть числами, строками, логическими значениями или null: тип определяется фактическим полем события, а не переданными при создании выборки type и typeHash.

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

Перед формированием ответа сервер удаляет все пакеты с номером не больше ackSequenceNumber, затем возвращает первый оставшийся пакет.

Если не подтвердить полученный sequenceNumber, следующий вызов возвращает тот же пакет повторно.

Один вызов возвращает не более одного пакета. Уже отправленный, но не подтверждённый пакет перестаёт расти; новые события попадают в следующий пакет.

Пакет ограничивается maxNotificationsPerPublish по числу записей recs. Группы deleted в этот счётчик не входят, а сохранённый maxSize размер ответа не ограничивает.

overflow не сбрасывается после чтения и продолжает возвращаться во всех следующих ответах, пока существует подписка.