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}]