Websocket User-API
Обзор
Websocket User-API служит для подключения пользовательских приложений.
Требует авторизации и настройки websocket-подключения на конкретные API, доступные пользователю по правам (поле opts.roles
сущности user).
Авторизация подключения user-api
Запрос login
в рамках user-api может производиться с указанием домена, имени пользователя и пароля.
["login", {"qid":0.19082918216295153,"login":"admin","pwd":"123","td":"test.era-platform.ru"}]
[ "login", { "qid":0.19082918216295153, "rsessionid":"06b64123-0176-13d6-89ab-02004c4f4f50" } ]
Идентификатор активной сессии может быть взят приложением либо из REST-API /rest/v1/iam/sessions/current
,
либо из cookie-файла EraSessionId
в браузере, который появляется после проведения авторизации в базовом веб-приложении app-root
.
Если метод setup
вызывается до авторизации, то в ответе на него все API возвращают "ok"
, но после авторизации в ответ на запрос login
сервер отправит модифицированный список запрошенных API (поле `capabilities):
[ "login_result", { "qid":0.19082918216295153, "result":"ok", "td":"test.era-platform.ru", "login":"admin", "register":"ok", "sessionid":"f098f576-0176-1572-b7ce-02004c4f4f50", "capabilities": [ {"key":"scripteditor", "result":"ok"}, {"key":"scriptnotify", "result":"ok"}, {"key":"test", "result":"error", "errormsg":"Access denied by IAM (route not found)"} ] } ]
После авторизации подключения производится его регистрация на сервисе Registrar, где оно поддерживается все время, пока активно. Информация о подключениях доступна клиентам сервиса Registrar, в том числе через API и из сценариев (компоненты "Операция", например, где возможен поиск с фильтрацией и маскировкой). Идентификаторы подключений могут использоваться в компоненте сценариев "Операция с websocket-подключением" для отправки событий и запросов удаленному приложению/системе, а также управлять обменом файлами.
websocktemp - каталог для временных файлов
Каждое websocket-подключение привязано к сессии пользователя. На каждом веб-сервере, обслуживающем websocket-подключение, находится временный каталог этой сессии, доступ к которому есть:
-
у приложений через REST-API
/rest/v1/fs/targets/websocktemp
в рамках той же сессии; -
у сценариев компонентом "Операция с websocket-подключением" с выбранной категорией "файлы websocktemp".
Каталог websocktemp и всё его содержимое автоматически удаляется с веб-сервера в следующих случаях:
-
сервер или роль веб-сервера перезагрузились;
-
по истечении 30 секунд после закрытия последнего websocket-подключения в рамках этой сессии на этом веб-сервере, если к этому времени не появилось новых websocket-подключений с этой сессией.
Состояния
Вне зависимости от того, какие api подключены с помощью метода setup
, сервер всегда уведомляет каждое подключение об изменениях состояния авторизованного пользователя.
[ "user_state_changed", { "presence": "registered", "state": "undefined" } ]
-
presence
- состояние, которое заказывается самим пользователем. Рассматривается системой как раздел (например:registered
,away
,callcenter
). -
state
- дочернее состояние внутри конкретного presence. Генерируется сервером на основании внутренней логики обслуживания (например:free
,busy
,break
внутриcallcenter
).
Информация о подключении
[ "connection_info", { "qid":930293482233 } ]
[ "connection_info_result", { "qid":930293482233, "result":"ok", "site":"main_site", "ownertype":"user", "domain":"test.rootdomain.ru", "userid":"e7adf0aa-05b7-8163-948c-3392a9660db9", "sessionid":"0de5ea8b-017d-9458-00d5-7cd30a921f58", "connectionid":"aa1bd0bb-017d-9638-e89d-7cd30a921f58", "capabilities":["rest","scripteditor","scriptnotify","subscr"], "datetime":"2021-12-07T18:48:54.191Z", "timestamp":1638902934191, "webservers":["http://192.168.0.112:80"], "roles":["admin","crud","monitor","scripteditor","stat","test"], "timezone":"default", "userlogin":"admin", "username":"Administrator" } ]
Доступные User-API
Могут быть настроены и подклчюены следующие capabilities:
-
inited - служебный модуль, подключаемый автоматически, для обработки запросов
setup
иlogin
. -
loggedin - служебный модуль, подключаемый автоматически после авторизации, для обработки запроса
setup
и отправки событийuser_state_changed
. -
scriptnotify - модуль для отправки уведомлений из сценариев.
-
scripteditor - модуль для обслуживания клиентского приложения редактора сценариев.
-
rest - управление классами системы (статическими и динамическими).
-
subscr - модуль для обслуживания запросов подписки на события и уведомления.
-
webconstr - плагин для обмена событиями с веб-приложениями, написанными на веб-конструкторе.
Поддерживается подключение плагинов, реализующих и другие произвольные User-API и соответствующие capabilities.