NotificationServer - Сервер оповещений

Программирование - Внешние компоненты

40
Механизм передачи текстовых сообщений, в режиме реального времени, между сеансами 1С(клиент, сервер, а также сеансами в разных информационных базах) и системами, способными работать с технологией WebSocket.

Как быть, если необходимо:

  • Серверу оповестить клиента(форму обработки/отчета и т.п.) о выполнение операции
  • Создать чат, реального времени, в 1С (при этом не нагружать систему лишними "ПодключитьОбработчикОжидания")
  • "Парсить" сайт и отдавать данные клиенту, не "замораживая" интерфейс
  • Передать данные из одной конфигурации в другую, не используя Com, Http-сервисы
  • Настроить обмен между 1С и мобильным приложением

Все эти задачи легко решить с помощью NotificationServer:

 

Принцип работы

Примеры использования

Установка сервера

Подключение компоненты

Синтакс-помощник

 

 Принцип работы

Весь механизм состоит из:

  1. Внешней компоненты для 1С
  2. Сервера Node.js® (с установленным пакетом Socket.IO)

В 1С инициализируется компонента NotificationServer. По указанному хосту выполняется подключение к серверу Node.js, при этом открывается соединение по протоколу WebSocket.

Всё взаимодействие идет в рамках канала(комнат), т.е. пользователь, подписавшийся на канал ("канал 1"), получит все данные отправленные в этот канал ("канал 1"). Таким образом возможно отправить данные от сервера к клиенту (в рамках канала).

Компонента работает в фоновом режиме и не "мешает" работе пользователя. При получении сообщения, инициализируется внешнее событие.

Внешнее событие 1С, генерируемое компонентой при получение сообщения имеет параметры:

Источник   - всегда "NotificationServer"
Событие   - имя канала, в который пришло сообщение
Данные     - текст сообщения

 

Данные отправляются в кодировке: UTF-8 закодировнные в base64

Ниже показаны примеры использования, а также описание установки Node.JS на локальной машине или хостинге Heroku.com

Текущая версия компоненты не поддерживает соединение по защищенному протоколу (https) 


 

Примеры использования

Все примеры реализованы в конфигурации: DemoConf.cf - в архиве
По умолчанию, компонента подключается к нашему тестовому серверу, на хостинге Heroku.com.

Т.к. сервер тестовый, то возможны временные падения сервера. Проверить сервер возможно по адресу:

https://notisrv.herokuapp.com

Все примеры укомплектованы файлами для локального воспроизведения.

 
 Прогресс бар (статусная строка) на Клиенте - отправка данных из фонового задания
 
 Чат в реальном времени ( 1С<->1C, 1С<->WEB )
 
 Оповещение клиента(сеанса 1С) о возникновении события
 
 Парсинг RSS лент с новостных сайтов + получение курсов валют

 

Установка сервера

 
 Установка Node.js на Windows
 
 Установка пакета Socket.IO на сервер Node.JS
 
 Установка Socket.IO на хостинге Heroku.com

 

Подключение компоненты  

Подключение через файл в файловой системе:

 
 1С 8.2/8.3, Управляемое приложение, Синхронный режим
 
 1С 8.2/8.3, Управляемое приложение, Асинхронный режим

Подключение через макет в конфигурации

В конфигурацию добавляется общий макет (в файле публикации: NotificationServer.zip), архив содержит в себе файлы:

  • AddInNative_64_R.dll - компонента для 64 битной версии
  • AddInNative_32_R.dll - компонента для 32 битной версии
  • MANIFEST.XML - Описание содержимого архива
 
 Через общий макет в конфигурации

 

Синтакс-помощник

 
 Методы
 
 Свойства

 

Состав прикрепленного к публикации архива:

40

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

Наименование Файл Версия Размер
NotificationServer - Сервер оповещений
.zip 4,43Mb
17.07.18
6
.zip 4,43Mb 6 Скачать

См. также

Комментарии
Сортировка: Древо
1. OpenWay 17.07.18 16:25 Сейчас в теме
Крутая вещь, но чем стандартный механизм вас не устроил? На форме можно подключить оповещение. Или интервал выполнения кода.
2. ScanDroid 41 17.07.18 16:50 Сейчас в теме
(1)
На форме можно подключить оповещение

Таким образом не оповестить с сервера + работает только в рамках одного клиента и одной ИБ

(1)
интервал выполнения кода

Если это про "ПодключитьОбработчикОжидания" - до данной разработки так и было у нас реализовано. Как правило Обработчик отрабатывает в холостую(не всегда есть результат) + если обработка "долгая" это приводит к "заморозке" формы
11. androgin 18.07.18 15:00 Сейчас в теме
(2) "Таким образом не оповестить с сервера" - вранье))
Сервер взаимодействия как раз предназначен для оповещения с сервера)
kadild; BigB; kiser; Xershi; +4 Ответить
15. ScanDroid 41 18.07.18 15:23 Сейчас в теме
(11)
"Таким образом не оповестить с сервера" - вранье))
Сервер взаимодействия как раз предназначен для оповещения с сервера)

Согласен, но в посте (1) не про него

(12)
Связка с сайтом и мобильным приложением (не 1С) прекрасно отрабатывает по всем адресатам.

Хотя бы в 2 словах или в личку как у Вас это реализовано.

И опять же: у вас нет компоненты для вебклиента в архиве

Это да. У нас не было в ней необходимости. Надо добавить.

(13)
сервер взаимодействия с 8.3.10

Т.е. вы считаете, что уже все сидят на 8.3.10...
17. logarifm 1022 18.07.18 21:37 Сейчас в теме
(2) А чем не устроил сервер взаимодействия?
kadild; BigB; +2 Ответить
19. ScanDroid 41 18.07.18 21:50 Сейчас в теме
(17) Я уже писал выше. Не корректно сделал упор в публикации...

А чем не устроил сервер взаимодействия

1. Не запустить на 8.2 (да у нас есть клиент, хотя многие думают, что уже все на 8.3.10 и выше)
2. Видимо я что-то упустил или не так прочитал ИТС, но сервер взаимодействия работает в рамках одной базы
3. Мне надо завязаться с Telegram, Viber, Skype, VK, FaceBook, whatsapp и получать все сообщения в 1С онлайн. Я не знаю как это сделать на сервере взаимодействия

Могу еще продолжить где мы используем этот механизм
kote; Il; +2 Ответить
22. logarifm 1022 18.07.18 23:24 Сейчас в теме
(19)
Я уже писал выше. Не корректно сделал упор в публикации...

Тогда отмодерирйте статью как следует.
23. logarifm 1022 18.07.18 23:27 Сейчас в теме
(19)
1. Не запустить на 8.2


А это вообще-то проблема ваша и головная боль тоже. Вообще-то 8.3 не только свистелка взаимодействия. А много много много чего другого! Советую почитать и использовать реальные возможности платформы. А клиентов которые не хотят обновлять не существует!!!
25. ScanDroid 41 19.07.18 00:08 Сейчас в теме
(23)
Вообще-то 8.3 не только свистелка взаимодействия. А много много много чего другого! Советую почитать и использовать реальные возможности платформы.


Как? 8.3 уже вышла??? Когда??

А клиентов которые не хотят обновлять не существует!!!

Почитайте ветку из (18). Есть кто на 8.2, кто на совместимости. Многим клиентам (у нас так) дешевле заплатить за "велосипед" из публикации, чем дотягивать платформу.
user774630; +1 Ответить
3. ArchLord42 62 17.07.18 20:25 Сейчас в теме
ну сервер взаимдействий же, а если не устраивает, тот же RabbitMQ может все и даже больше вашего, не понимаю зачем изобретать велосипеды и тратить время, чем взять уже готовое, а в случае с тем же кроликом и Enterprise ready решение и юзать его?
4. ScanDroid 41 17.07.18 22:28 Сейчас в теме
(3)
ну сервер взаимдействий же

Кончено. Только сервер взаимодействий круче. Там и видео и встроено все в платформу, а у меня только открытый кроссплатформенный "голый" сервер Node.JS - крути его как хочешь, НО! сервер взаимодействия с какой платформы?... Или Вы думаете, 1С выпустило обновление и все сразу побежали обновляться.

(3)
RabbitMQ

RabbitMQ - кролик очень крут. НО!
1. не видел ни одной реализации для 1С по приему сообщений, НЕ http сервисов(если есть решение, то поделитесь ссылкой). Читал реализацию от SilverBulleters - что сказать, они очень крутые и как результат ценник)
2. RabbitMQ - это не совсем корректное сравнение. RabbitMQ и Node.JS вообще из разной области.

Возможно я не корректно описал возможности. Спасибо Вам, подумаю над изменением описания.
5. ScanDroid 41 17.07.18 22:50 Сейчас в теме
(4) открытый == логика на JavaScript в Вашем распоряжение
9. Goleff74 128 18.07.18 09:46 Сейчас в теме
(4)
А как этот сервер можно использовать для приема сообщений сервером 1С без http?
13. androgin 18.07.18 15:03 Сейчас в теме
(4) сервер взаимодействия с 8.3.10.
Все типовые конфигурации уже поддерживают эту платформу.
Тут по-любому нужно обновлять платформу
6. Infactum 259 18.07.18 08:40 Сейчас в теме
(3) Как подключить к серверу взаимодействия 1С сторонние приложения расскажите? Потому что "под капотом", там скорее всего web socket, но спецификации в свободном доступе, на сколько я знаю, нет.

Взаимодействие по Web Socket и AMQP это как бы из разных опер. Иногда можно применять для решения одной и той же задачи, но говорить, что автор изобрел "велосипед" - глупо.
Я вот не припомню в свободном доступе реализации NativeApi компонент для работы с WS. Только от SimplIt - но она платная.

Жаль только, что как и почти всегда на ИС, исходники компонент не выкладываются. Тут почему-то считают, что десяток строк кода на C++ (за исключением шаблона ВК) представляют какую-то дикую коммерческую тайну. Или боятся свой код показать так сильно. Не знаю даже.
10. ScanDroid 41 18.07.18 10:49 Сейчас в теме
(6)
Жаль только, что как и почти всегда на ИС, исходники компонент не выкладываются

У нас была мысль сделать коммерческий проект, но что-то не до него. Скоро выложим исходники. Но там и правда "десять строк"

После 24 июля какую площадку использовать?

Можно эту же, возможно любую другую. Как написали в (8) "Dropbox не единственный способ развернуть приложение" - он показался наиболее удобным.

Для желающих халявы есть бесплатный инстанс Amazon например.

Отличное решение. К слову, сам Heroku.com использует мощности Amazon + у амазона есть web-ide, которая из коробки завязана с heroku.com

(9)
А как этот сервер можно использовать для приема сообщений сервером 1С без http?

Как напишите, так и можно использовать.
14. androgin 18.07.18 15:03 Сейчас в теме
(6) используй http-сервисы
7. Rustig 976 18.07.18 08:55 Сейчас в теме
(0)

Учитывайте, тот факт, что с 24 июля 2018г. Heroku прекращает поддержку Dropbox .Все ранее развернутые приложения будут работать, но новые развернуть не получится

После 24 июля какую площадку использовать?
8. Infactum 259 18.07.18 09:19 Сейчас в теме
(7) Так Dropbox не единственный способ развернуть приложение. Рекомендую заглянуть в документацию.
Да и свой сервер развернуть не проблема. Хостингов нынче полно. Для желающих халявы есть бесплатный инстанс Amazon например.
12. androgin 18.07.18 15:01 Сейчас в теме
Простите, но у меня всё это работает на уровне платформы без всяких компонент.
Связка с сайтом и мобильным приложением (не 1С) прекрасно отрабатывает по всем адресатам.
И опять же: у вас нет компоненты для вебклиента в архиве
16. androgin 18.07.18 20:22 Сейчас в теме
Далее: тут кому-то не понравилось, что можно обмениваться с 1С/СВ через хттп-сервисы. Пусть это останется на уровне его образования))
Практических приемов в сети предостаточно, чтобы увидеть преимущества этих сервисов
20. ScanDroid 41 18.07.18 22:00 Сейчас в теме
(16)
1С/СВ через хттп-сервисы

Да никто не спорит что хттп-сервисы это круто) Успокойтесь )
Сейчас хттп-сервисы - это банально. Они на каждом шагу. Трэнд - Сервер взаимодействий.
21. androgin 18.07.18 23:09 Сейчас в теме
(20) успокоиться нужно вам)))
Видимо вы и есть тот самый минусовщик))))
Выдумывать велосипед, который едет только по широкой дороге, и не может заехать на тротуар - ну игры же)
Эта Банальность придумана для удобства и быстродействия, тем более в 1С уже озвучили, что упор будет на них в плане развития интеграции.
Ну и ваша фраза: "Как напишите, так и можно использовать" - все за вас ответила
24. ScanDroid 41 18.07.18 23:33 Сейчас в теме
(21)
Ну и ваша фраза: "Как напишите, так и можно использовать"

конечно, это не коробочное решение. Это голый сервер Node.JS - реализация логики в руках разработчика(как напишешь, так и будешь использовать :) ) Наша ВК только вариант получения результата от сервера.
26. androgin 19.07.18 01:41 Сейчас в теме
(24) вопрос: ЗАЧЕМ?
Ну не все же тут владеют Node.JS.
Ваша ВК довольно ограничена и требовательна к клиенту, в отличии от штатного СВ, который пашет даже в вебклиенте.
27. ScanDroid 41 19.07.18 09:40 Сейчас в теме
(26)
вопрос: ЗАЧЕМ?
Ну не все же тут владеют Node.JS.

За "вебом" будущее. Node.JS - отличный вариант, чтобы новичку попрактиковаться в этом "вэбе". Хотя бы для этого.


(26)
требовательна к клиенту

Это как Вы определили?
18. logarifm 1022 18.07.18 21:41 Сейчас в теме
(0) А чем не устроил сервер взаимодействия тем более вот недавно как Доржи поднимал голосовалку https://forum.infostart.ru/forum9/topic195315/
androgin; +1 Ответить
28. PloAl 118 19.07.18 14:24 Сейчас в теме
(0) Делал тоже самое что описано в этой статье, но только 2 года назад, еще 1с нигде не писала про "сервер взаимодействия".
Статья опубликована тоже здесь: "Что нам стоит push построить".
Технологии описаны теже, внешние компоненты там тоже бесплатные.
В вашем решении нет:
Авторизации пользователей.
Картинок пользователей.
Отложенной доставки сообщений.
29. ScanDroid 41 19.07.18 14:59 Сейчас в теме
(28)
Статья опубликована тоже здесь: "Что нам стоит push построить".

Когда оформлял публикацию нашел Вашу статью.

В вашем решении нет:
Авторизации пользователей.
Картинок пользователей.
Отложенной доставки сообщений.


Это есть в платной версии + еще плюшки. Но мы уже забили на платную версию, не пошло )
31. kote 481 29.07.18 20:12 Сейчас в теме
Лучше сразу ссылку дать:

"Что нам стоит push построить"
https://infostart.ru/public/545047/
30. kote 481 29.07.18 20:06 Сейчас в теме
Отличное решение что бы дополнить возможности платформы инструментом обмена по сокетам..

Сам собирался сделать что-то похожее в немного других целях - вы меня опередили :)

Меня интересовал больше быстрый обмен сообщениями с запущенными фоновыми заданиями - в обе стороны.

Я бы сделал в публикации упор на саму компоненту, а не на чаты - описал методы и показал примеры кода для работы с ней.. программистам это будет интереснее, ИМХО
Оставьте свое сообщение