Внешняя компонента ROM-SocketIO
Библиотека входит в SDK прежде всего для возможности интеграции с облачными сервисами, которые предоставляют API, на базе протокола Socket.IO.
В то же время, библиотека является универсальной и может использоваться для любых других задач, с участием протокола Socket.IO. Наиболее типичный пример - подключение к собственному серверу на базе Node.js
Библиотека ROM-SocketIO реализует API в стиле JavaScript-клиента Socket.IO. Поддерживается протокол SocketIO v1.x.
ROM-SocketIO - внешняя компонента 1С:Предприятие 8.x, реализована по технологии Native API, в соответствии с рекомендациями 1С, изложенными в руководстве «Технология создания внешних компонент». Библиотека написана на языке C++.
На текущий момент, ROM-SocketIO поддерживает только ws-схема URI (нешифрованное соединение)
ROM-SocketIO работает в асинхронном режиме - результаты выполнения методов будут возвращены как внешнее событие 1С.
Текущая версия
1.0.1 (beta)
Авторские права
Авторские права принадлежат Simplit, согласно международной конвенции о защите авторских прав
Поддерживаемые ОС
Операционная система: Windows x32 / x64, все версии начиная с Windows 7
Windows XP и Windows Server 2003 не поддерживаются
Поддерживаемые версии 1С:Предприятие
Платформы: 1С:Предприятие 8.х, все версии включая 8.3.7
Использование на стороне клиента:
- Клиент (обычное приложение)
- Толстый клиент (управляемое приложение)
- Тонкий клиент (управляемое приложение)
Использование на стороне сервера:
- Сервер 1С:Предприятие x32
На стороне сервера недоступны внешние события. Поэтому, при работе на стороне сервера, функционал внешней компоненты будет ограничен отправкой сообщений.
Свойства
- ИДСессии / SessionID – (чтение), (строка), идентификатор сессии клиента
- Подключено / Connected – (чтение), (булево), флаг состояния подключения к серверу
- Таймаут / Timeout – (чтение/запись), (строка), таймаут при установке соединения с сервером, по умолчанию 5 секунд
- Версия / Version – (чтение), (строка), версия внешней компоненты
Методы
- Подключиться / Connect (<URI>) - установить соединение с сервером
- Отключиться / Disconnect() - разорвать соединение с сервером
- Отправить / Send(<ИмяСобытия>, <СтрокаСообщения>) - отправить произвольное сообщение серверу
- Подписаться / On(<ИмяСобытия>) - подписаться на событие с именем <ИмяСобытия>
- Отписаться / Off(<ИмяСобытия>) - отменить подписку на событие с именем <ИмяСобытия>
- ОтписатьсяВсе / OffAll() - отменить подписку на все события
События
ROM-SocketIO работает в асинхронном режиме - результаты выполнения методов возвращаются как внешние события 1С в обработчик ВнешнееСобытие(Источник,Событие,Данные)
Параметр Событие содержит информацию о событии в структурированном виде - в формате JSON.
Код 1С:
Процедура ВнешнееСобытие(Источник, Событие, Данные) Сообщить(Событие); Сообщить(Данные); КонецПроцедуры
При подключении к серверу:
Параметр Событие содержит пакет {«Event»: «Connection»,«State»: «Open»},
параметр Данные содержит пакет {«Connection»: «Open»}
Вывод окна сообщений:
{"Event": "Connection","State": "Open"} {"Connection": "Open"}
При отключении от сервера:
Вывод окна сообщений:
{"Event": "Connection","State": "Close","Reason": "Normal"} {"Connection": "Close"}
Код 1С:
Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Данные="{""Connection"": ""Close""}" Тогда Сообщить("Соединение разорвано"); КонецЕсли; КонецПроцедуры
При ошибке подключения к серверу:
Вывод окна сообщений:
{"Event": "Connection","State": "Fail"} {"Connection": "Fail"}
Код 1С:
Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Данные="{""Connection"": ""Fail""}" Тогда Сообщить("Ошибка установки соединения"); КонецЕсли; КонецПроцедуры
При получении сообщения от сервера:
Параметр Событие содержит пакет {«Event»: «Message»,«Namespace»: «/»,«Name»: «new message»,«Type»: «String»}
, где
- Namespace - имя пространства,
- Name - имя события,
- Type - тип события (строка, двоичные данные)
параметр Данные содержит текст сообщения в формате JSON
Вывод окна сообщений:
{"Event": "Message","Namespace": "/","Name": "new message","Type": "String"} ["new message","Привет мир!"]