Функционал разработки:
URL - адрес хоста для подключения веб-сокет (ws или wss).
Токен - Ваш токен авторизации (authorization bearer token) если он требуется (указывается без префикса "bearer" ).
Заголовки - список "кастомных" http-заголовков, которые могут быть добавлены при соединении. Колонка Name - имя заголовка, Value - значение.
"Открыть соединение" - открывает соединение по веб-сокет.
"Включить TLS12" - 'насильно' использовать TLS (1.1 и 1.2) при шифрованном соединении (если будут ошибки "удаленный хост неожиданно разорвал существующее подключение" или "не возможно создать защищённое соединение")
"Отправить команду" - отправляет текст команды по веб-сокет.
"Закрыть соединение" - закрывает соединение по веб-сокет.
Инструкция по установке: прилагается при скачивании.
Особенности:
Взаимодействие с внешней компонентой реализовано по асинхронному паттерну. Со стороны 1С необходимо вызывать методы "НачатьВызов<ИмяМетода>", где ИмяМетода - это имя определенного метода API компоненты. 1С принимает данные от компоненты через обработчик "ВнешнееСобытие". Пример взаимодействия можно посмотреть в приложенной обработке.
API компоненты:
методы:
bool OpenConnection(str url, str token="", str[] headers = null) - открывает соединение с веб-сокет по url, используя token (если введен). Массив строк headers ("неопределено" по умолчанию) - массив своих заголовков, если необходимо. Пример передачи можно увидеть в обработке. В результате, в обработчик "ВнешнееСобытие" должно прийти событие с именем CоnnectionOpenEvent.
bool PutCommand(string cmd="") - посылает команду cmd по веб-сокет. В результате в обработчик "ВнешнееСобытие" должно прийти событие с именем SendCommandEvent, также после этого присылается еще одно с именем "ReceiveResponseEvent" с данными ответа от веб-сокет.
bool CloseConnection() - закрывает текущее соединение. В результате в обработчик "ВнешнееСобытие" должно прийти событие с именем ConnectionCloseEvent.
string GetStatusAndData() - получает в виде строки информацию о признаке соединения (IsStarted) и количестве сообщений в очереди ещё не отправленных команд (CommandCount) и ответов (ResponseCount). Формат получаемой строки следующий: "[КлючСвойства1]:[ЗначениеCвойства1];[КлючСвойства2]:[ЗначениеCвойства2]...".
void SetSecuryProtocolTLS(bool Enable = true) - добавляет использование компонентой протоколов защищенного соединения TLS 1.1 и TLS 1.2 если параметр Enable = true (по умолчанию). Данный метод, возможно, необходимо использовать на некоторых системах если наблюдаются соответствующие ошибки при создании соединения.
Текущая версия:
1.3 - исправлена ошибка с обработкой принимаемых сообщений ws
Тестирование:
Разработка проверялась на ОC Windows 10 Enterprise с версией платформы 1С 8.3.15.1489. Для работы необходим установленный .Net Framework v4.5 (начиная с Windows 8 установлен "по умолчанию", то есть для более новых фреймворков компонента должна работать). Видео работы
*не работает на OC Windows 7/Windows 2008 Server - из-за технических ограничений, Microsoft не стала поддерживает сокеты нативно на этой ОС. Возможно, в будущем это ограничение будет исправлено в компоненте.
Доп. возможности:
Компонента может накапливать в себе очередь команд (их количество можно получить через метод GetStatusAndData, описанный выше) до подключения к веб-сокет, как только соединение будет установлено, эти команды будут обработаны.