Внешняя компонента 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++.

Официальный сайт Socket.IO

На текущий момент, ROM-SocketIO поддерживает только ws-схема URI (нешифрованное соединение)

ROM-SocketIO работает в асинхронном режиме - результаты выполнения методов будут возвращены как внешнее событие 1С.

Текущая версия

Авторские права

Авторские права принадлежат 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","Привет мир!"]