WebSocket клиент в 1С. Первый взгляд на релиз 8.3.27.1508

11.04.25

Интеграция - WEB-интеграция

С выходом новой платформы 8.3.27.1508 появился встроенный объект для работы с вебсокетами. Расскажу про свой первый опыт создания Websocket клиента.

Всем привет. Хочу поделиться тем, как начать использовать новый объект WebSocketКлиентСоединения, описать некоторые тонкости, которые успел заметить.

Пробовать буду на внешней обработке. Она будет очень простая: три кнопки "Открыть соединение", "Отправить сообщение", "Закрыть соединение".

 

 

Также понадобится реквизит формы "КлючСоединения" с типом строка, который я заполняю при создании формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	КлючСоединения = "f5d8323e-482a-4c42-9109-96875f0599d0";
	
КонецПроцедуры

Ключ соединения может быть любой строкой, "Соединение1", "WSconnect" и т.д. Я сгенерировал GUID, мне показалось так удобнее. Ключ используется для последующей работы с WebSocket соединениями.

Все процедуры можно писать даже на клиенте.

 

Кнопка "Открыть соединение"

&НаКлиенте
Процедура ОткрытьCоединение(Команда)
	
	Попытка
		URL = "ws://192.168.0.19:8765";
		WebSocketКлиентСоединения.ОткрытьСоединение(КлючСоединения, URL);
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры

В справке не указано, каким образом должен выглядеть URL. Методом проб и ошибок выяснил, что он состоит из имени протокола "ws://" и адреса хоста. У меня в качестве сервера выступает питоновский скрипт, который открывает порт 8765 на удалённой машине с адресом 192.168.0.19

 

Кнопка "Отправить сообщение"

&НаКлиенте
Процедура ОтправитьCообщение(Команда)
	
	Попытка
		Соединение = WebSocketКлиентСоединения.ПолучитьСоединение(КлючСоединения);
		Соединение.ОтправитьСообщение("Hello websocket!");
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры

Первое, что тут происходит, это поиск соединения в менеджере вебсокет соединений как раз по ключу, который добавлен в переменную КлючСоединения. Потом отправка сообщения в него.

Объект WebSocketКлиентСоединение не сериализуется, поэтому его нельзя передавать с клиента на сервер. Но 1С поступили разумно, создав менеджер вебсокет соединений, который самостоятельно управляет ими. То есть, нам не нужно заботиться о сохранении своего соединения в переменной. Более того, если закрыть обработку, из которой создавали соединение, и открыть заново, то можно сразу отправлять сообщения, потому что своё соединение всегда можно получить по ключу! Соединения не сбрасываются, пока не завершена сессия текущего пользователя. Из другой сессии того же пользователя, к сожалению, получить соединение по тому же ключу нельзя.

 

Кнопка "Закрыть соединение"

&НаКлиенте
Процедура ЗакрытьСоединение(Команда)
	
	Попытка
		Соединение = WebSocketКлиентСоединения.ПолучитьСоединение(КлючСоединения);
		Соединение.Закрыть();
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры

Тут снова находим наше соединение по ключу и завершаем его.

 

Заключение

Всё оказалось довольно просто и удобно. Надеюсь, для кого-то статья станет отправной точкой для создания своих обработок для Websocket соединений.

Для интересующихся домашнее задание: изучить обработчики объекта и создать код для "ОбработчикПолученияСообщения" для обработки входящих запросов :)

Всем удачи, пока.

WebSocket

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    3179    5    0    

11

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    35296    70    45    

30

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    2891    2    3    

5

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    19346    24    22    

20

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1151    7    2    

9

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4895    4    2    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dsdred 3816 11.04.25 19:02 Сейчас в теме
Для отправной точки у вас мало информации.
В январе я уже делал поподробнее статейку
https://infostart.ru/1c/articles/2280032/

А ещё чуть раньше я показывал в видео то что вы писали, но опять же более подробно https://m.vkvideo.ru/video168885665_456239123
2. Minz 2 11.04.25 20:00 Сейчас в теме
Мне попадалась Ваша статья раньше, она хороша, но тогда вебсокеты были альфа версией платформы. Я ждал финального релиза, и вот он вышел. Возможно, кому-то будет нужна именно такая небольшая статья, из которой видно, что не нужно бояться вебсокетов и они не такие страшные (смайлик)
3. aximo 2269 12.04.25 07:58 Сейчас в теме
Ничего, что мало информации, зато вспомним, что есть такое)
4. gybson 12.04.25 11:09 Сейчас в теме
Т.е. мы должны теперь следить за тем, чтобы соединения имели разные ключи. Чтобы никакой пытливый ум не поленился придумывать разные имена. Потрясающе. Кроме совместной разработки кода теперь нужна поддержка совместных подключений, чтобы не выяснять кто закрыл чужое подключение.
5. sultbec 10 12.04.25 16:53 Сейчас в теме
(4) зачем? Если по одному имени у каждого юзера свое соединение
Оставьте свое сообщение