WebSocket Клиент / Сервер. Внешний компонент

Публикация № 937068

Разработка - Разработка внешних компонент

Реализация протокола WebSocket. Клиентская часть для взаимодействия с внешними сервисами. Серверная часть для организации собственного сервера, принимающего клиентские соединения в многопоточном режиме. Возможно взаимодействие RabbitMQ Slack Asterisk и другие

Актуальная документация здесь 1c-websocket.readthedocs.io

WebSocket — протокол связи поверх TCP-соединения, предназначенный для обмена сообщениями между приложениями в режиме реального времени.

Основной смысл протокола - держать постоянное соединение между сервером и клиентом для обмена данными.

Данная разработка содержит в себе как Клиент так и Сервер websocket.

Для реализации сервера можно использовать такой алгоритм:

Регламентное задание с расписанием повторять каждую 1 секунду запускается на сервере, прослушивает порт и принимает соединения.

Если обработка входящих сообщений занимает продолжительное время - запускаем фоновое задание обработки и с ИД клиента. Затем возвращаем результат клиенту, если это требуется.

Позволяет подключаться и принимать подключения в роли сервера как в режиме без шифровки (ws://), так и используя протокол шифрования (wss://) (сертификат .pem (для примера в приложении))

 
 RabbitMQ
 
Пример SLACK

Собрать в архив файлы компонента поможет обработка

По теме:

Тестировалось на платформе 8.3.11.

Скачать файлы

Наименование Файл Версия Размер
WebSocket Клиент / Сервер. Внешний компонент win_x86

.dll 2,75Mb
16.11.18
27
.dll 2,75Mb 27 Скачать
WebSocket Клиент / Сервер. Внешний компонент: win_x64

.dll 3,82Mb
16.11.18
37
.dll 3,82Mb 37 Скачать
server.pem (пароль "test")

.pem 3,40Kb
22.12.18
11
.pem 3,40Kb 11 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. informa1555 1549 16.11.18 15:00 Сейчас в теме
А чего так мало описания? Я правильно понял что для того чтобы 1Ска приняла сообщение на своей стороне , она должна постоянно по расписанию опрашивать порт т.е. обращаться к компоненте чтобы она это сделала?
2. nomadon 387 16.11.18 15:05 Сейчас в теме
(1) решил не набивать статью примерами или кейсами, а дополнять по вопросам для оценки интересности данных технологий, а по интерфейсу взаимодействия ссылка вначале.

да, конечно, для того что бы принять соединение необходимо постоянно слушать порт. Как вариант, можно подвесить на регламентное задание которое будет постоянно висеть и перезапускаться в случае падения.
3. dyas 17.02.19 18:22 Сейчас в теме
4. dyas 19.02.19 02:34 Сейчас в теме
Вопрос. Можно ли принимать/отправлять фалы с сервера на клиент и наоборот. Если да то какого максимального размера ?
5. nomadon 387 19.02.19 06:04 Сейчас в теме
(4) можно двоичные данные кодировать в base64 и передавать как строку, максимальный размер не тестировался, думаю зависит от архитектуры и памями клиента и сервера
6. Masich 14.03.19 14:17 Сейчас в теме
Добрый день.

А как сделать для клиента ожидание сообщения от сервера в фоновом режиме?

Я вижу, что во "ВнешнееСобытие" компонента не сообщает.
7. nomadon 387 14.03.19 17:38 Сейчас в теме
Да, внешних событий нет.

Варианта 2:
1. Блокировать исполнение кода до получения сообщения (или наступления таймаута)
2. Оставить объект компонента в памяти, не блокируя исполнение и периодически возвращаясь к проверке наличия сообщений, при долгих серверных обработках например, или обработчиком ожидания/действием пользователя на клиенте

Если не секрет, какую задачу хотите решить ?
8. Masich 15.03.19 10:21 Сейчас в теме
(7)
>> Если не секрет, какую задачу хотите решить ?
Интеграция с WEB-CRM через REST.
Хочется подвесить соединение и ждать сообщений от CRM.
Я запихнул в обработку ожидания, но не вариант, т.к. "Получить()" получает за раз одно сообщение, а сообщений много, и очередь накапливается.

Было бы хорошо, чтоб компонента во ВнешнееСобытие передавала все поступающие сообщения.
Еще было бы хорошо, чтоб компонента имела фильтрацию сообщений по вхождению текста. Т.к. если от сервера их много, что часто бывает, то 1с может ощутимо тормозить на их фильтрации.
9. nomadon 387 15.03.19 13:47 Сейчас в теме
(8)
вот так тормозит?
Пока Получить(Сообщение, таймаут) Цикл

получите все доступные сообщения, компонент хранит в себе пришедшие сообщения, если их не получать они будут накапливаться в памяти.
10. Masich 15.03.19 18:18 Сейчас в теме
(9)
Я про цикл как-то не подумал.
Спасибо.
11. nomadon 387 15.03.19 18:19 Сейчас в теме
(10) посмотрите примеры в документации, может еще что найдете
40. ROM_1C 683 04.04.20 21:54 Сейчас в теме
(7) А чем это лучше обработки ожидания и получения данных с сервера напрямую?
12. 1739712 23 16.03.19 11:45 Сейчас в теме
добрый день
а какой заголовок отправляется на сервер при подключении?
13. 1739712 23 16.03.19 12:04 Сейчас в теме
меня интересует значение origin

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
user709491_gayrat.komilov; +1 Ответить
14. popovm 25.03.19 14:57 Сейчас в теме
Как подключиться к ws-серверу, если клиент закрыт прокси?
Какие настройки inetcfg указать?
15. nomadon 387 25.03.19 16:01 Сейчас в теме
(14) прокси а данном компоненте не поддерживается
16. antonwantstosleep 31.05.19 08:05 Сейчас в теме
Подскажите, а для Linux бинарников нету?
17. nomadon 387 31.05.19 08:23 Сейчас в теме
(16) нет, требуется доработка кода, пока не занимался
18. lagerfield 31.05.19 16:24 Сейчас в теме
Добрый день, мы работаем на платформе 1С:Предприятие 8.1 (8.1.15.14), сможем ли мы подключить эти DLL?
19. Steelvan 23.09.19 12:00 Сейчас в теме
Про "поднимать веб-гнезда на сервере сложно" согласен. Через костыли.
Что бы экземпляр компоненты жил в потоке на сервере этот самый поток надо создать.

Как вариант, написать фоновое задание, которое будет создавать поток.
Этот поток передать во внешнюю компоненту вызовом метода и удерживать его там, передавая управление 1С только при получении сообщения.

Пока Истина Цикл
Сообщение = ВнешняяКомпонента.ПолучитьСообщение() // Здесь поток замирает до получения сообщения
ОбработкаСообщения(Сообщение);
КонецЦикла
20. karpik666 2911 06.11.19 10:04 Сейчас в теме
Здравствуйте, скачал компоненту, и сразу встал вопрос, ваша компонента умеет передавать заголовки при подключении или нет? Мне нужно реализовать аналог такой функции
websocket.DefaultDialer.Dial(*addr, http.Header{"Authorization": {"Bearer " + *token}})
По факту это аналог вашей, но с передачей заголовков.
Пример с сайта со slack также не подходит, так как в нем вначале вызывается http метод авторизации, а затем уже полученный url передается для соединения без заголовков.
21. nomadon 387 06.11.19 10:16 Сейчас в теме
Добрый, заголовки вроде не делал, slack и так работал, может что-то поменялось
22. karpik666 2911 06.11.19 10:59 Сейчас в теме
(21) получается, если разработчики api дополнительно не предусмотрели, что перед работой через websocket необходимо дополнительно авторизоваться через http, то здесь ваша компонента не поможет? Но это же частный случай.
23. nomadon 387 06.11.19 11:03 Сейчас в теме
Частый да, но такой потребности не было, заголовок это всего лишь первые строки в tcp пакете, сообщение всеравно целиком приходит, по суди заголовок от сырых данных передаваемых первым сообщением мало чем отличается, поэтому слак раньше первым сообщением просил авторизацию и разрывал соединение, если не нравилось, как сейчас - не знаю. Да и уже существенно поменялся интерфейс используемой библиотеки c++, За полчаса заголовки у меня добавить не получится
24. karpik666 2911 06.11.19 11:06 Сейчас в теме
(23) смотрите в описании написано
Позволяет подключаться и принимать подключения в роли сервера как в режиме без шифровки (ws://), так и используя протокол шифрования (wss://)

У меня есть wss ссылка и токен для нее, я могу использовать вашу компоненту для работы или нет?
25. nomadon 387 06.11.19 11:08 Сейчас в теме
Токен это прикладной объект конкретного сервера, по wss подключение поддерживается
26. karpik666 2911 06.11.19 11:12 Сейчас в теме
(25) wss подключение, это подключение с авторизацией, с таким же успехом могло потребоваться передавать логин и пароль, либо id сессии, и в том и другом случае ваша компонента предполагает, что должна быть предварительная http авторизация, при этом должна быть сформирован специальный url, который и будет означать, что вы авторизовались.
Вы когда к сайту подключаетесь по обычному http часто с таким сталкиваетесь? Все обычно передается в заголовках.
27. karpik666 2911 06.11.19 11:25 Сейчас в теме
(25) будет ли выпущена новая версия с учетом текущих замечаний?
28. lazovit 21.11.19 17:29 Сейчас в теме
С сервисом Мои звонки будет работать?
29. lectorkoba 21 03.12.19 14:26 Сейчас в теме
Скачал компоненты и для 32 и для 64. Все в целом удобно, пока не столкнулся с тем что нужно заполнение заголовка "origin". Было бы замечательно конечно если бы параметром можно было его устанавливать. Обновите пожалуйста, без этого не получится ее использовать.
30. lectorkoba 21 03.12.19 15:28 Сейчас в теме
Заметил ошибку
ВебСокетКлиент.Подключиться(АдресСервера);
ВебСокетКлиент.Отключиться();
ВебСокетКлиент.Подключиться(АдресСервера);
Зависает до перезагрузки 1С.
31. ЕСТЬNULL 172 03.03.20 07:15 Сейчас в теме
День добрый. Не понял как использовать серверную часть.

Чтобы прослушивать порт надо создавать объект AddIn.WebSocket.Server, нужно его инициализировать каждую секунду? Или где он должен храниться?

Я так понял в каком-нибудь общем модуле должен болтаться бесконечный цикл с Сервер.Принять(0, ИДКлиента, Данные) в котором будет обработчик приёма и отправки. Принял - оповестил, получил инструкцию по отправке (как...? через регистр сведений например?) - обработал.

У меня должна быть возможность оповестить всех, или часть пользователей о чём-нибудь, поэтому я должен всегда иметь возможность получить объект AddIn.WebSocket.Server с его соединениями. Как это сделать не через попу понять пока не могу.

Односекундное РЗ может быть стартером сервера с бесконечным циклом, а проверять что сервер запущен - как? Телнетом пробивать порт?

Я понимаю, что данная компонента даёт возможность, а дальше уже крутись как хочешь, но может вы уже кто-то соорудил на базе этого что-то нерукозадое? Пока на ум лезет всякая непотребность и гадость, которую нежелательно воплощать в жизнь. Может подскажите свой механизм, как пример? Плиз?
32. nomadon 387 03.03.20 07:35 Сейчас в теме
Метод Сервер.Принять блокирует исполнение кода до получения сообщения или по таймауту. Действительно для постоянного поддержания соединения требуется бесконечный цикл, в котором обрабатываются события и поддерживается соединение с клиентам в этом сеансе.

Если Вы хотите оповестить об изменении состояний, произведенных в другом сеансе - действительно нужен какой то способ передачи данных между сеансами, регистра. хранилище настроек, либо собор данных и отслеживание состояний в этом же сеансе,
например кеш остатков бонусов клиентов, если ПолученоСообщение = Сервер.Принять(5000,... Если Не ПолученоСообщение Тогда при простое сервера сделать запрос в базу, проверить изменилось ли состояние бонусов относительно кеша в текущем сеансе - отправить уведомление.

Да, это всего лишь дополнение возможности платформы. Это не готовое решение и не библиотека с готовым функционалом.

- Из действующих, которые на текущий момент удалось реализовать - поднятый сервер, клиенты на мобильных устройствах через браузер подключаются и получают события и данные для отражения в реальном времени (дисплей заказов на складе, текущие отгрузки, очередь клиентов). Авторизация организована примерно как в Slack, если первым сообщением получен пакет, который соответствует структуре и по полученным данным разрешена авторизация - то клиент работает, иначе разрыв соединения.

- Обмен данными между двумя базами на одном сервере. Модифицирована универсальная обработка выгрузки загрузки по правилам, которая получает текст выгруженного XML и отправляет по соединению. принимающая сторона отправляет полученный текст в фоновое задание на исполнение загрузки, в дуплексе.
Получается что-то вроде брокера сообщений, но сообщения сразу доставляются в приемник, без записи за диск
33. ЕСТЬNULL 172 03.03.20 08:16 Сейчас в теме
Спасибо за ответ!

Ну то есть регламентное задание, примерно вот такого характера:

Если НЕ порт занят (телнет) Тогда (или ... что-то адекватное может? Как проверить компонента зависла или нет?)

Инициализировать сервер

Запустить бесконечный цикл, типа

ПустьРаботает = Истина;
Пока ПустьРаботает Цикл
Если Сервер.Принять(1000, ИДКлиента, Данные) Тогда;
ОбработкаПринятого(Сервер,ИДКлиента,Данные);
КонецЕсли;
ОпросЗаданийКОтправке(Сервер);
КонецЦикла

Не будет являться говнокодом, как вы думаете?

Можно вместо проверки порта проверять актуальность даты последнего опроса заданий... хз..
А как наверняка уничтожить серверное соединение из другого сеанса, если с компонентой что-то случится? (освободить порт)
34. nomadon 387 03.03.20 08:24 Сейчас в теме
(33) компонента выбрасывает исключение, если не может захватить порт для прослушивания

Понятие говнокода - оно относительное, например если разработка вашего решения будет стоить в 10 раз дешевле для бизнеса, то ему (бизнесу) абсолютно наппевать, насколько хорошо или плохо Вас оценит любой другой специалист. С другой стороны, если вдруг Вы покинете этот бизнес и разработку придется поддерживать другому специалисту, который вообще не в курсе про существование таких способов интеграции - другой специалист расскажет что Вы сделали все плохо и это говнокод. Это нужно переделывать и стоить это будет в 10 раз дороже ;)

По идее, Компонента = Неопределено (и компонента.Остановить()) должны освобождать занятые ресурсы. Можно регламентное задание перезапускать с периодичностью и в расписании указать завершать принудительно через...

Как Вы, наверное, знаете в платформе есть механизмы удержания сеансов, соединений, сборщик мусора и т.д. эту совокупность нужно тестировать в комплексе
35. ЕСТЬNULL 172 03.03.20 11:24 Сейчас в теме
Короч потратил сегодня пол дня. Опробовал протокол, написал простейшую авторизацию на токенах (мою первую).
Но, похоже, всё это мне не пригодится. Выкладываю её сюда, может кто-то сэкономит своё время.

Да...уж... думал более-менее клиент интересный написать, соединился при создании формы, а передать дальше объект Клиент нельзя.
Ни запихать во временное хранилище, ни произвольным реквизитом формы... В строку только значение не делал... если бы даже получилось - это всё равно дичь какая-то. Хотя казалось бы объект да объект. С сервером тоже как-то грустно. Впервые почувствовал импотенцию от интерпретируемых языков программирования.

Производителю данной фичи однозначно респект. Интересный опыт. Хоть мозги размял.
Прикрепленные файлы:
WebsocketAuth.dt
39. ROM_1C 683 04.04.20 21:50 Сейчас в теме
(35) я так понимаю, сервер сам по себе не может передать данных на клиента так как не знает его до момента пока клиент не дергнет его. А при каждой отправке сообщения нужно заново подключатся, так как не где держать объект подключения, при этом ид подключения меняется.
Тогда не вижу смысла в компоненте. Сервер можно и так дергать...
48. ЕСТЬNULL 172 17.04.20 02:58 Сейчас в теме
(39)
Смысл был именно в том, чтобы держать постоянную связь с КЛИЕНТОМ, и хранить идентификаторы соединений с клиентами для того, чтобы при появлении новой информации оповестить КЛИЕНТОМ. То есть смысл именно в том, чтобы дёргать клиентов. То есть где-то должно быть фоновое задание с бесконечным циклом, в котором хранятся подключения.
Такой цикл должен держать актуальную таблицу подключений в памяти, держать соединения, принимать от клиента запросы и опрашивать другую таблицу на предмет заданий для отправки клиентам (например из РС).
В случае появления нового задания - отправлять данные клиенту через уже активное соединение.
36. cprit 383 25.03.20 22:50 Сейчас в теме
Добрый день!
Планируется ли реализовывать сборку под Linux?
37. nomadon 387 27.03.20 09:06 Сейчас в теме
(36) нет пока не планируется. по анонсам платформы - можно будет заменить платформенными функциями
38. ROM_1C 683 04.04.20 21:24 Сейчас в теме
Автор, подскажите, хочу отравить с сервера на клиент, использую метод Отправить(ИДКлиента, ТелоСообщения)
ИДКлиента - это номер соединения. Если я правильно понял, номер меняется при каждом приеме нового сообщения?
Логика така:
открыл форму, подключился к серверу, ожидаю сообщений от сервера..
Где брать идКлиента?
Спасибо.
41. ROM_1C 683 06.04.20 18:38 Сейчас в теме
(38)
равильно понял, номер меняется при каждом приеме нового сообщения?
Логика така:
открыл форму, подключился к серверу, ожидаю сообщений от сервера..

Разобрался. Ид меняеться при каждом новом подключении
42. nomadon 387 06.04.20 21:56 Сейчас в теме
(38) ИД - возвращает объект сервера при каждом новом подключении клиента.
ИД уникальный в рамках сеанса прослушивания соединений сервером, т.к. при разрушении объекта сервера - все соединения разрываются.
43. ROM_1C 683 11.04.20 00:18 Сейчас в теме
Автор, использовали ли вашу копоненту в реальном проекте? Можно ли использовать ее в коммерческом проекте?
Спасибо.
45. nomadon 387 15.04.20 14:44 Сейчас в теме
(43) Сам использовал, если кто-то где то использовал и заработал много денег - мне не сказал)) использовать можно в любом проекте
44. perensona 17 15.04.20 13:06 Сейчас в теме
Непонятно, может ли компонента при подключении к WebSocket передать параметр токена для авторизации ?
Посмотрел в документации - у вас идет авторизация через http, на который вы передаете токен, а http возвращает вам серкретный url, по которому идет просто соединение на WebSocket. В моем случае адрес сокета заранее известен, нужно на него передать такой же токен, как вы делаете по http. Сервис сторонний, изменить его нельзя. Поддерживает ли компонента передачу параметра для авторизации в заголовке через ваш метод "Подключиться"?
46. nomadon 387 15.04.20 14:45 Сейчас в теме
(44) Нет, в текущем исполнении нет возможности передавать заголовки
47. perensona 17 15.04.20 20:33 Сейчас в теме
Сложно ли добавить параметр заголовка ? Я почитал выше, и вижу, что многие просили добавить.
49. Maximum.proger 17.06.20 18:11 Сейчас в теме
компонента не подключается на сервере x64
не через файл ни через архив
50. nomadon 387 18.06.20 22:14 Сейчас в теме
(49) телепаты больше не ходят сюда, неверный код в студию, пожалуйста
51. Maximum.proger 19.06.20 11:18 Сейчас в теме
1С:Предприятие 8.3 (8.3.16.1063). Клиент-Сервер.

добавлены 2 общих макета:
WebSocketDll64 - дд, файл dll ВК для x64
WebSocketAddIn - дд, zip архив с файлом манифеста и двумя fфайлам dll 32 и 64.

&НаКлиенте
Процедура TestClient64(Команда)
	
	ПутьКомпоненты = "ОбщийМакет.WebSocketDll64";
	
	ИмяКомпоненты = "WebSocket64";
	
	ТестКомпонентыНаКлиенте(ПутьКомпоненты, ИмяКомпоненты);
	
КонецПроцедуры

&НаКлиенте
Процедура TestClientZip(Команда)
	
	ПутьКомпоненты = "ОбщийМакет.WebSocketAddIn";
	ИмяКомпоненты = "WebSocketAddIn";
	
	ТестКомпонентыНаКлиенте(ПутьКомпоненты, ИмяКомпоненты);
		
КонецПроцедуры


&НаКлиенте
Процедура ТестКомпонентыНаКлиенте(ПутьКомпоненты, ИмяКомпоненты) 
	
	НачатьУстановкуВнешнейКомпоненты(Новый ОписаниеОповещения("ПослеУстановкиВК", ЭтаФорма, Новый Структура("ПутьКомпоненты, ИмяКомпоненты", ПутьКомпоненты, ИмяКомпоненты)), ПутьКомпоненты);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеУстановкиВК(ДопПараметры) Экспорт
	
	НачатьПодключениеВнешнейКомпоненты(Новый ОписаниеОповещения("ПослеПодключенияВнешнейКомпоненты", ЭтаФорма, ДопПараметры), ДопПараметры.ПутьКомпоненты, ДопПараметры.ИмяКомпоненты, ТипВнешнейКомпоненты.Native);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеПодключенияВнешнейКомпоненты(Подключено, ДопПараметры) Экспорт
	
	ИмяКласса = "AddIn." + ДопПараметры.ИмяКомпоненты + ".Client";
	
	Клиент = Новый(ИмяКласса);
	
	АдресСервера = "wss://echo.websocket.org";
	
	Попытка
		Клиент.Подключиться(АдресСервера);
	Исключение
		
		Описание = ОписаниеОшибки();
		ТекстОшибки =  Клиент.ОписаниеОшибки();
		
		ТекстОписания = Описание + ": " + ТекстОшибки;
		
		ВызватьИсключение ТекстОписания;
		
	КонецПопытки;
	
	Клиент.Отключиться();	
	
КонецПроцедуры
Показать


В случае с zip получаем ошибку:

Тип не определен (AddIn.WebSocketAddIn.Client)
{ВнешняяОбработка.TestWebSocket.Форма.Форма.Форма(53)}: Клиент = Новый(ИмяКласса);


Тестирование работы на сервере

&НаСервере
Процедура TestServer64НаСервере()
	ПутьКомпоненты = "ОбщийМакет.WebSocketDll64";
	
	ПодключитьВнешнююКомпоненту(ПутьКомпоненты, "WebSocket64", ТипВнешнейКомпоненты.Native);
	
	Клиент = Новый("AddIn.WebSocket64.Client");
	
	АдресСервера = "wss://echo.websocket.org";
	
	Попытка
		Клиент.Подключиться(АдресСервера);
	Исключение
		
		Описание = ОписаниеОшибки();
		ТекстОшибки =  Клиент.ОписаниеОшибки();
		
		ТекстОписания = Описание + ": " + ТекстОшибки;
		
		ВызватьИсключение ТекстОписания;
		
	КонецПопытки;
	
	Клиент.Отключиться();
КонецПроцедуры

&НаСервере
Процедура TestServerZipНаСервере()
	ПутьКомпоненты = "ОбщийМакет.WebSocketAddIn";
	
	ПодключитьВнешнююКомпоненту(ПутьКомпоненты, "WebSocketAddIn", ТипВнешнейКомпоненты.Native);
	
	Клиент = Новый("AddIn.WebSocketAddIn.Client");
	
	АдресСервера = "wss://echo.websocket.org";
	
	Попытка
		Клиент.Подключиться(АдресСервера);
	Исключение
		
		Описание = ОписаниеОшибки();
		ТекстОшибки =  Клиент.ОписаниеОшибки();
		
		ТекстОписания = Описание + ": " + ТекстОшибки;
		
		ВызватьИсключение ТекстОписания;
		
	КонецПопытки;
	
	Клиент.Отключиться();
КонецПроцедуры
Показать


В случае с zip получаем:
Тип не определен (AddIn.WebSocketAddIn.Client)
{ВнешняяОбработка.TestWebSocket.Форма.Форма.Форма(144)}: Клиент = Новый("AddIn.WebSocketAddIn.Client");
{ВнешняяОбработка.TestWebSocket.Форма.Форма.Форма(166)}: TestServerZipНаСервере();


Через архив ни на сервере, ни на клиенте не подключается.

Текст из файла манифеста:

<?xml version="1.0" encoding="UTF-8"?>
 <bundle xmlns="http://v8.1c.ru/8.2/addin/bundle" name="websocket">
     <component os="Windows" path="1c-websocket_Win_32.dll" type="native" arch="i386"/>
     <component os="Windows" path="1c-websocket_Win_64.dll" type="native" arch="x86_64"/>
 </bundle>
52. user783273 20.08.20 07:46 Сейчас в теме
Добрый день.

А есть демо версия что бы понять будет работать в рамках нашей задачи или нет?

Задача есть служба для обслуживаения терминалов Приватбанк которая общается по протоколу WEBSOCKET и вот не понятно будет ли работать с вашей компонентой.
53. nomadon 387 20.08.20 09:49 Сейчас в теме
(52) Добрый день. Демо нет, но если там используются заголовки - то в текущей версии точно не будет
Оставьте свое сообщение

См. также

Внешняя компонента для работы по Web-socket протоколу Промо

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

5 стартмани

30.03.2018    25711    35    Ditron    83    

Отрубаем зависшие на сервере процессы

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Вы любите COM объекты? Я их просто обожаю! Практически все, чего не может 1С, можно доделать ими. Но есть у них небольшой косячок: иногда они зависают и висят, пока не отрубишь их через диспетчер задач или до перезагрузки, жрут память и в конце концов перестают запускаться. Что делать? Рубить!

1 стартмани

28.07.2020    1649    1    zarankony    3    

Диагностика контекста выполнения (внешняя компонента)

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Небольшая экспериментальная внешняя компонента для получения дополнительной информации о контексте выполнения.

1 стартмани

24.07.2020    3795    2    YPermitin    14    

Универсальная обертка для использования NATIVE компонент на платформе 1С 7.7, 8.0 и 8.1

Разработка внешних компонент v8 Абонемент ($m)

Используете 1С 7.7, 8.0 или 8.1 и вас раздражает, что под вашу 1С уже не выпускаются современные компоненты. А хотелось бы?

1 стартмани

07.07.2020    2182    1    karpik666    0    

TextRadar - нечеткий поиск в тексте Промо

Разработка внешних компонент Поиск данных v8 1cv8.cf Абонемент ($m)

В отличие от нечеткого сравнения строк, когда обе сравниваемых строки равнозначны, в задаче нечеткого поиска выделяются строка поиска и строка данных, а вычислить необходимо не степень похожести двух строк, а степень присутствия строки поиска в строке данных. Нормированный коэффициент, находящийся между 0 и 1 позволяет отсечь заведомо низкие результаты, организовать поиск по синонимам и т.д. Наглядное отображение результатов в кратком и детальном виде поможет быстро найти интересующий фрагмент.

1 стартмани

19.09.2018    16919    20    TSSV    18    

Нано HTTP сервер - внешняя компонента для мобильного приложения 1C, на Android

Разработка внешних компонент Мобильная разработка v8 v8::Mobile 1cv8.cf Абонемент ($m)

Нано HTTP сервер на терминале сбора данных "ATOL Smart.Lite android 7.0". Работает только с GET и POST запросами. Аутентификация BASE64. Не поддерживает HTTPS и не передает файлы. В прикрепленном архиве исходники на компоненту (С++ и java для Android Studio 3.6.2), ЦФ - мобильного приложения и тестовая обработка.

1 стартмани

22.06.2020    2025    5    SanyMaga    19    

Сервер WS или как с сервера вызвать клиента? аля Сервер взаимодействий без него

Практика программирования v8 Абонемент ($m)

Не так давно, в 1С появился Сервер Взаимодействия, который решает огромную проблему сервер-клиентского взаимодействия. Теперь появилась возможность отправить уведомления с сервера на клиент. Не буду углубляться во все возможности штатного (если так можно назвать) сервера взаимодействия, и кто уже успел с ним поработать - почувствовал все преимущества и недостатки. Как раз через недостатки было принято решение отказаться от него и сделать свой. Следующая конфигурация - это серверWS (WebSocket), для любой взаимосвязи сервера с клиентом, клиента с клиентом, не только в пределах одной базы, но и различных баз, и даже размещенных удалено друг от друга.

10 стартмани

12.04.2020    2498    1    ROM_1C    7    

Получение фото с веб-камеры

Разработка внешних компонент v8 Абонемент ($m)

Получение фото с веб-камеры без ActiveX. Внешняя компонента по технологии Native API.

1 стартмани

25.03.2020    4156    39    berezdetsky    32    

Использование сборок .NET в 1С 7. и 8.x. Создание внешних Компонент. Промо

Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Данная разработка создана для использования сборок .Net в 1С через преобразование объектов и классов в COM-объекты, которые можно использовать в 1С. Достигается это путем создания класса, реализующего методы интерфейса IReflect public class AutoWrap: IReflect.

1 стартмани

28.11.2013    82400    235    Serginio    71    

Пауза без загрузки процессора. Внешняя компонента Native API на C++

Разработка внешних компонент v8 Абонемент ($m)

Внешняя компонента Native API на C++ для Win32 и Win64 позволяет установить паузу на заданное количество секунд без загрузки процессора.

2 стартмани

21.03.2020    2110    3    DNN13    26    

Быстрая печать этикеток (ZPL, EPL, TSPL, EZPL, GEPL, TSPL-EZ)

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Качественная и быстрая печать на внутреннем языке принтеров этикеток.

4 стартмани

02.02.2020    5942    31    Johny_v    6    

Сканирование по TWAIN в 1С (обычные и управляемые формы)

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка показывает пример, как можно в 1С проводить сканирование с помощью компоненты TWAIN.

3 стартмани

03.01.2020    4816    20    Denr83    0    

Tool1CD Beta в деле Промо

Разработка внешних компонент v8 Абонемент ($m)

Пс, парень! Не хочешь немного сырых байтов?

1 стартмани

09.05.2018    25233    28    baton_pk    26    

Вставка картинки из буфера обмена (JavaScript + внешняя компонента)

Разработка внешних компонент v8 Абонемент ($m)

Вставка картинки из буфера обмена с помощью JavaScript в поле HTML в web-клиенте и с помощью внешней компоненты в тонком/толстом клиенте. Механизм протестирован на платформах 8.2 и 8.3 Для запуска опубликованной конфигурации требуется платформа релиза не ниже 8.3.14.

1 стартмани

05.12.2019    3890    5    Andreyyy    8    

Клиент событий в «бесконечном» HTTP-соединении для 1С: Предприятие 8

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Native Компонента в отдельном потоке обрабатывает пакеты событий, в "бесконечном" http соединении и передаёт данные в очередь внешних событий.

10 стартмани

02.12.2019    3734    1    starovton    5    

Внешняя компонента 1С Native x32/x64: отправка UDP сообщения

Разработка внешних компонент v8 Россия Абонемент ($m)

Компонента предназначена только для отправки текстовых UDP сообщений. Работает как на клиенте, так и в серверных вызовах в любой разрядности Windows платформы.

1 стартмани

05.11.2019    3834    7    von_de    0    

NativeDraw: Компонента рисования для 1С [V2.6.2] Промо

Разработка внешних компонент Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Рисуйте в формах 1С, также предлагается небольшое количество нерисовальных функций

1 стартмани

13.07.2015    46544    428    ПерваяСистема    147    

Управление окнами и мониторами в 1С

Сервисные утилиты Разработка внешних компонент v8 1cv8.cf 1С:Франчайзи, автоматизация бизнеса Абонемент ($m)

Управление размерами, активностью и положением окон из 1С с возможностью вывода окон на второй монитор и запретом изменения окна.

1 стартмани

28.10.2019    8311    7    Grigoriy251    5    

Native внешняя компонента для оповещения по UDP или TCP

Разработка внешних компонент v8 Абонемент ($m)

Native внешняя компонента для оповещения по UDP или TCP, которая реализует возможность в 1С передавать сообщения с сервера на клиента. Исходный код компоненты также представлен.

1 стартмани

06.10.2019    8987    16    vdv2701    28    

Внешняя компонента Sundries: несколько полезных системных функций

Разработка внешних компонент v8 Абонемент ($m)

Звук, пауза, буфер обмена, раскладки клавиатуры и т.д.

4 стартмани

30.08.2019    5409    5    sivin-alexey    10    

Компоненты распознавания и печати штрих-кодов Промо

Разработка внешних компонент Сканер штрих-кода v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA. P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.

10 стартмани

10.07.2015    68606    83    igorberezhnov    95    

Native внешняя компонента для передачи по UDP

Разработка внешних компонент v8 УТ10 Россия Абонемент ($m)

Внешняя компонента Native-API для организации передачи с использованием UDP.

1 стартмани

29.07.2019    4061    4    axae    0    

Внешняя компонента для работы с драйвером "Атол v.10". 1С:8.3

Разработка внешних компонент Кассовые операции Кассовые операции v8 Абонемент ($m)

Внешняя компонента, для работы с драйвером «Атол v.10», посредством JSON-заданий.

1 стартмани

16.07.2019    9202    23    gortrex    4    

Менеджер буфера обмена. Нативная внешняя компонента win 32/64

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Добавляет возможности получения информации из почтовых вложений или файлов с других рабочих столов (RDP) с помощью операций копирования/вставки. Может «прослушивать»: любые изменения буфера обмена; нажатие клавиш соответствующих вставке (paste); нажатие клавиш копирования (copy); drop операции. Это новая реализация аналогичной компоненты https://infostart.ru/public/379695/, но теперь не C#, а С++ нативно для x32 / x64. (см. http://youtu.be/-PaWWFfbYo4)

1 стартмани

26.06.2019    6239    18    Bww    23    

Полезные приемы при работе с Excel из 1С (Версия 3.1) Промо

Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    194833    441    Zerocl    68    

Обработка вывода на печать QR-кода и штрихкодов в различных форматах (одномерные и двумерные)

Разработка внешних компонент Ценники v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Обработка предназначена для вывода на печать QR-кода и штрихкодов в различных форматах без установки дополнительных ActiveX компонент. Тестировалась на чистой базе платформы 1С:Предприятие 8.3 (8.3.14.1630), а так же в конфигурациях Бухгалтерия предприятия КОРП, редакция (3.0.69.35) и на Бухгалтерия предприятия (3.0.70.30)

2 стартмани

22.05.2019    9502    38    MGemini    2    

DLL для подключения к Asterisk (32/64 клиенты)

Разработка внешних компонент Телефония, SIP v8 1cv8.cf Абонемент ($m)

Подключение к Астериску и получение событий "Newchannel","BridgeEnter","Hangup" через ОбработкаВнешнегоСобытия.

1 стартмани

19.03.2019    7430    13    xxxAndricxxx    14    

DLL для обмена между 1С (и не только) через UDP порты (32/64 клиенты)

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Библиотеки для создания функционала для прослушивания портов из 1С и отправки сообщений на удаленный udp порт.

1 стартмани

28.02.2019    6662    8    xxxAndricxxx    2    

1C Messenger для отправки сообщений, файлов и обмена данными между пользователями 1С, вэб страницы, мобильными приложениями а ля Skype, WhatsApp Промо

Практика программирования v8 Бесплатно (free)

Данная разработка позволяет пользователям 1С обмениваться сообщениями, файлами (до 3 мб). Запрашивать данные у клиента как Вэб или HTTP сервисах. Основано на технологиях ASP.Net SignaR который использует WebSockets и т.д. для двунаправленного обмена данными. Используется обертка над классами .Net

15.12.2015    61393    Serginio    5    

Эмулятор ККМ по стандарту ФФД 1.1

Разработка внешних компонент Кассовые операции ККМ Кассовые операции v8 Розница УТ11 Россия Абонемент ($m)

Эмулятор драйвера ККМ по стандарту ФФД 1.1 предназначен для использования всех возможностей программы, при отсутствии физической кассы. Подойдет как программистам при разработке интерфейса РМК, например, так и пользователям для тестирования возможностей программы.

1 стартмани

30.12.2018    20444    134    Matveymc    25    

Внешняя компонента для считывателя карт ACS 122/1281 (БПО)

Разработка внешних компонент Ридер магнитных карт v8 1cv8.cf Абонемент ($m)

Внешняя компонента для считывателя бесконтактных карт ACS 122/12 для подсистемы подключаемого оборудования.

1 стартмани

11.12.2018    6513    37    eugenevk    31    

Внешняя компонента для выполнения регулярных выражений

Разработка внешних компонент v8 Абонемент ($m)

Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8. Написана на C++. Используется движок boost::regex (v 1.69, v 1.68 - для Android). Версия синтаксиса Perl Compatible Regular Expressions.

1 стартмани

12.11.2018    12112    28    KAV2    62    

Снимок экрана для 1С Промо

Универсальные обработки Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Довольно часто люди сталкиваются с необходимостью сделать снимок экрана. Если вы или ваши сотрудники основную часть времени проводят в 1С и у вас есть необходимость прикреплять графические файлы, то эта компонента для вас.

1 стартмани

08.02.2016    27628    33    linkforget    11    

Подготовка MANIFEST.XML (файл описания внешних компонент)

Обмен через XML v8 1cv8.cf Абонемент ($m)

Внешняя обработка, в которой указываются списки файлов внешних компонент для формирования файла описания MANIFEST.XML.

5 стартмани

06.11.2018    5255    6    nomadon    0    

Native компонента для 8.3, реализующая метод sleep()

Разработка внешних компонент v8 Россия Абонемент ($m)

Внешняя Native 64-битная компонента для 1C 8.3, которая реализует метод sleep() - паузу выполнения кода. Пауза для большой устойчивости сделана платформозависимой и требует WinAPI. Ид компоненты - AddIn.AddInNativeSleep.NativeSleep.

1 стартмани

16.10.2018    7414    3    ripreal1    9    

001. Криптография и цифровая подпись RSA-sha256 на платформе 1С

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Внешняя компонента, исходники, обработка для 1С.

5 стартмани

04.09.2018    13652    27    Nikola23    60    

Native API компонента для использования установленного в системе интерпретатора Python Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Компонента позволяет подключать к платформе 1С python-модули, оформленные в стиле внешней компоненты. Кроме этого, она позволяет запускать небольшие фрагменты python-кода прямо из модулей 1С. На данный момент поддерживаются платформы 8.2 — 8.3 x86 Windows.

1 стартмани

14.05.2013    38622    73    Принт    31    

Программный вызов сенсорной клавиатуры

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Программный вызов сенсорной клавиатуры в ОС Windows, для сенсорных мониторов, которые не определяются системой как hid-совместимый сенсорный экран. Тестировалось на платформе 8.3.9.2033, конфигурация Розница 1.0.16.8.

1 стартмани

04.08.2018    8557    17    dewersia    3    

Класс-обработка “Работа с картами Яндекс”

Разработка внешних компонент WEB v8 Абонемент ($m)

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    24208    197    RSConsulting    16    

Распознавание лиц (off-line). Демонстрационная база.

Разработка внешних компонент v8 Абонемент ($m)

Распознавание лиц входит в нашу жизнь стремительными темпами, бизнес стремится за событиями. В публикации находится описание и пример использования нейросетей для распознавания лиц.

1 стартмани

17.07.2018    15849    72    nomadon    45    

Распознаем штрих-коды QR, EAN-13, Code 128 с помошью 1С и веб камеры Промо

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Внешняя компонента, поможет распознать штрих-код, используя обычную веб камеру. Умеет работать с UPC-A, UPC-E, EAN-8, EAN-13, Code 39, Code 128, QR Code, Interleaved 2 of 5, Codabar, RSS-14, Data Matrix, PDF 417, Aztec, MaxiCode.

1 стартмани

31.10.2012    76859    187    shakmaev    84    

QR-code полная версия (без шрифта и внешней компоненты для 8.2, 8.3 и любого типа клиента)

Разработка внешних компонент Сканер штрих-кода v8 1cv8.cf Абонемент ($m)

Предназначена для создания QR-code с указанием процента восстановления потерянных данных. Строка кодирования может содержать все печатаемые символы, в том числе и кириллические. Для работы не требуется внешняя компонента или шрифт.

2 стартмани

10.07.2018    11480    15    bobank    6    

Внешняя компонента для ping'а

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Внешняя компонента для выполнения ping'а из 1С:Предприятия 8.

1 стартмани

04.07.2018    10556    5    frkbvfnjh    24    

JVM Native API плагин - для запуска в 1С плагинов написанных на Java

Разработка внешних компонент v8 Абонемент ($m)

Запускаем виртуальную машину Java в 1С. Собрана внешняя компонента которая позволяет запускать виртуальную машину java в среде 1С. Позволяет как передавать параметры в java - так и получать уведомление через externalevent. Предпосылкой создания являлся тот факт, что есть много готового функционала которого не хватает в 1С. Язык сpp - довольно сложен для быстрой разработки, и теперь возможно использовать готовые сборки java классов (так называемые jar-файлы) для использования в 1С.

1 стартмани

20.06.2018    11697    32    minimajack    72    

Удаленное управление через Skype Промо

Разработка внешних компонент Администрирование данных 1С v8 1cv8.cf Абонемент ($m)

Удаленное управление 1С через Skype. Со стороны клиента для работы нужен только Skype. Со стороны сервера любой компьютер с 1С.

1 стартмани

09.02.2014    43108    13    moolex    29    

Вызов методов 1С из внешней компоненты, выполненной по технологии COM на C++

Разработка внешних компонент v8 Абонемент ($m)

Пример работы с объектами и методами 1С из внешней компоненты, разработанной по технологии COM на С++.

1 стартмани

04.06.2018    8425    4    le_    1    

Внешняя компонента Native для создания штрих кода (GS1 DataBar Expanded, GS1 DataBar Expanded Stacked и другие)

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

В связи с внедрением ГИС Меркурий потребовалось внешняя компонента, которая создает штрихкод и отдает 1С. ВК создана на основе библиотеки zint www.sourceforge.net/projects/zint.

1 стартмани

27.04.2018    17704    210    artmaks1988    93    

Работа с WebSocket из 1С в объекте Поле HTML Документа (HTML 5)

WEB v8 1cv8.cf Абонемент ($m)

WebSocket - протокол над http, позволяющий серверу отправлять на клиент уведомления. По мотивам обработок https://infostart.ru/public/434771/ https://infostart.ru/public/338126/

1 стартмани

18.04.2018    10266    45    capwell    8    

Внешняя компонента - Запись и воспроизведение .wav файлов. Обработка-иллюстратор. Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Обработка иллюстрирует использование внешней компоненты MMLibrary для записи и воспроизведения звуковых wav файлов. Компонента разработана по технологии Native.

1 стартмани

01.03.2014    18202    20    vozhd    7    

Работа с любыми сканерами документов в 1С c помощью внешней компоненты от vintasoft.com

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Универсальная обработка для сканирования изображений на любых сканерах (поточных, планшетных) средствами ActiveX от компании Vintasoft.

1 стартмани

29.03.2018    8392    3    Dach    0