Дело было вечером, делать было нечего.
Остановиться, для изобретения велосипеда, на node.js и модуле socket.io
Нет смысла подробно описывать, в интернете очень много информации, что такое node.js
Замечу только, что это небольшое приложение, доступное для windows и linux компьтеров.
Если в двух словах, node.js это скрипт сервер, позволяющий открывать и слушать порты, формировать ответы на пришедшие запросы. По сути своеобразный аналог web серверам apache, IIS. Только проще, легче и быстрее.
Код node.js прост и по сути аналогичен объектам, используемым HTTP сервисами 1С, запрос - ответ. Дополнительный модуль Socket.io позволяет организовать своего рода пул клиентских соединений.
Самый простой способ продемонстрировать работу Push сервера это «чат», но «чат» слишком простой, поэтому чуть усложнил «хеллоу ворд» до «мессенджера».
Архитектура решения «Пушок»:
Серверная часть:
1С предприятие (файловая или серверная версия 8.3.6 и выше) - используется в качестве базы данных, и сервера отложенных сообщений.
Node.js – небольшой простой скрипт сервера.
Настройка портов и другой рабочей информации, а также запуск, остановка скрипта сервера node.js автоматизирован. Т.е. хоть содержатся в скрипте, но настраиваются через интерфейс 1С.
Клиентская часть:
1С тонкий клиент (8.3.6 и выше), позднее планирую сделать мобильное приложение + service.apk
AddInNativeSIO.dll – Внешняя компонента native api c++, для приема передачи сообщений в 1С предприятие. Пока только x86 windows.
На данный момент "мессенджер" пока не является полнофункциональным решением. И по сути служит примером онлайн обмена данными и сообщениями с потверждением отправки. Не претендую на лавры изобретателей :)
Хоть Node.js и был описан в качестве своеобразного "аналога" вебсерверов, но для публикации http сервиса 1С требуется вебсервер apache или IIS. Сервис нужен для обратной связи node.js и 1с, поскольку в внешней компоненте на сервере не используется внешнее событие и полученные данные передать нельзя.
Также, данную разработку можно использовать как пример для интеграции с практически всеми базами данных, доступными в nodejs.
Возможно, в дальнейшем добавлю вариант использованияя postgresql, запись данных напрямую из nodejs. В таком варианте таблицы postgresql будут добавлены как внешние источники данных. Или же можно испольвать nosql базу данных, более приспособленную для хранения json структур.
Добавить в скрипт сервера SSL шифрование несложно, несколько строчек кода и, возможно, еще один модуль добавлю позднее.
Пушок 1.1
-
Добавил небольшую статистику онлайн в серверной части.
-
Добавил возможность использования https.
-
Добавил передачу файлов, пока в один поток 8 мбайт сек. около 30 мб. максимум.
-
Добавил версию для мобильного приложения.
-
Убрал ограничения.
Варианты применения по сути безграничны:
-
Управление сервером с мобильного.
-
Персональное облако.
-
Последняя миля современной доставки курьером, ранее видел перемещение между городами.
-
Общие таблицы mxl с онлайн редактированием сразу несколькими пользователями, что-то вроде таблиц гугл.
-
Также возможно вот такое нестандартное использование стандартных казалось бы вещей.
Смартфон с NFC, селфи палка и проездной билет. Билет используется в качестве метки идентификатора - своего рода аналог штрих кода. При наличии у работника современного смартфона автоматизация склада или ахо может быть очень бюджетной.
Логика решения изначально ориентирована на простоту и минимум кода. Но совсем просто не вышло.
Код конфигураций полностью открыт, скрипт javascript также.
Код сервера конфигурации сервера 1400 строк, клиента 1000, скрипта node.js 300 строк.
Из конфигураций исключен макет https компонент, его выложу позднее.
Установка:
Предполагается что файловая или серверная 1с уже установлена, а также apache или IIS
Загрузить файл PS.cf конфигурации сервера, в новую базу.
Опубликовать http сервис 1с, установленной в предыдущем пункте конфигурации сервера.
Установить node.js и socket.io, на официальных сайтах и в интернете масса простых инструкций.
В режиме предприятия, заполнить настройки пуш сервера, добавить пользователей, группы.
Далее можно разворачивать базу из PScl.cf, заполнять параметры подключения к серверной части.
Мобильная версия требует публикации на вебсервере. При доступе к пушсерверу через интернет, публикация также должна быть доступна, очень похоже что каждый раз при запуске внешная компонента загружатся с вебсервера сервера.
Продолжение публикации в Сервер push сообщений “Push0k“ 18.05
Рекомендуется использовать файлы из новой публикации.