STOMP API

SberMobile Server поддерживает STOMP API для интеграции со сторонними системами ПО. Вы можете использовать соединения по протоколу STOMP, чтобы подписаться и получать уведомления при изменении переменных или возникновении событий в интересующем контексте.

Simple (or Streaming) Text Orientated Messaging Protocol (STOMP)  - это текстовый протокол, схожий с HTTP. STOMP обеспечивает интероперабельный формат проводной связи, чтобы клиенты STOMP могли общаться с любым брокером сообщений STOMP. Это обеспечивает простое и обширное взаимодействие по передаче сообщений между многими языками, платформами и брокерами.

Настройка STOMP API

Чтобы установить соединение, STOMP-запросы используют те же URL и номер порта, что и REST API.

Аутентификация осуществляется через REST API-запрос.

Доступ к STOMP API

Чтобы работать с STOMP API в качестве клиента, вам необходимо получить токен аутентификации, создать экземпляр клиента, а затем установить соединение между этим клиентом и сервером, использующим токен. После установления соединения между STOMP-клиентом и STOMP-сервером будут выполняться все поддерживаемые операции.

Получить токен можно с помощью запроса аутентификации. После этого подключите ваш клиент к серверу через передачу запроса Connect с использованием токена.

Запрос connect

Устанавливает соединение между экземпляром STOMP-клиента и STOMP-сервером. Если во время выполнения запроса не происходит ошибок, соединение в итоге будет установлено, и вы получите представление STOMP-сессии. Передавайте все остальные STOMP-запросы через эту сессию.

Токен аутентификации нужно включить в заголовки запроса. Для получения токена выполните запрос аутентификации.

Запрос

/rest/v1/stomp

Файлы заголовка запроса

Authorization: {authentication_token}

Замените {authentication_token} на токен, полученный в результате запроса аутентификации.

Пример запроса

Запрос с использованием локальной машины в качества хоста STOMP-сервера и номером HTTP порта по умолчанию:

ws://localhost:8080/rest/v1/stomp

Запрос с использованием локальной машины в качества хоста STOMP-сервера и номером HTTPS порта по умолчанию:

ws://localhost:8443/rest/v1/stomp

Заголовок:

Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJjOTQ1NTk0ZC01NGVmLTQ0ODItYWQxZi00NThhYWQwNzZlZDciLCJzdWIiOiJhZG1pbiIsImlhdCI6MTU5MDQ3OTQ2MywiZXhwIjoxNTkwNDgzMDYzfQ.AeaaXg7_m651JGquQ-WEzh_8Z7avL14s709dSd8wV4c

Запрос подписки на изменения значений

Подписывается на оповещения об изменениях значения переменной. В качестве результата вы получите представление подписки. Чтобы отписаться от таких оповещений, вызовите соответствующий метод экземпляра подписки.

Запрос

/contexts/{context}/variables/{variable}

Замените {context} на полный путь контекста.

Замените {variable} на имя переменной.

Параметры

В качестве параметра вы должны передать обработчик уведомлений. Каждый раз при изменении значения переменной обработчик будет получать новые значения в качестве входных данных.

Пример

Подписка на изменения переменной info контекста users.admin.devices.virtual:

/v1/contexts/users.admin.devices.virtual/variables/info

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

[{"updateOriginator":0,"variable":"info","value":[{"localRoot":"","remotePath":"users.admin.devices.device1","icon":"st_device","remoteRoot":null,"mapped":false,"description":"Virtual Device 2","peerRoot":null,"type":"device.virtual","peerPrimaryRoot":null,"group":"default"}],"user":null}]

Запрос подписки на событие

Подписывается на оповещения о событии. В качестве результата вы получите представление подписки. Чтобы отписаться от таких оповещений, вызовите соответствующий метод экземпляра подписки.

Запрос

/v1/contexts/{context}/events/{event}

Замените {context} на полный путь контекста.

Замените {event} на имя события.

Параметры

В качестве параметра вы должны передать обработчик уведомлений. Каждый раз при возникновении события обработчик будет получать строковое представление события в качестве входных данных.

Пример

Подписка на событие 1 контекста users.admin.devices.virtual:

/v1/contexts/users.admin.devices.virtual/events/event1

Пример строкового представления входных данных при возникновении события:

[{"date":"2000-02-01 12:00:00.000","string":"","int":0}]