Назначение:
Удаленная консультация пользователей по интернету. Будет полезна на стадии внедрения разработок, когда необходимо достаточно часто консультировать пользователей по функционалу приложения, а так же в период сопровождения клиента.
Состав:
Программный продукт состоит из двух частей:
- серверная часть, работающая в качестве службы на Windows (SetupService.exe);
- серверная часть для операционной системы CentOS (rh_server);
- клиентское приложение (Удаленная консультация.exe), выполняющее соединение и управление.
Для работы приложений необходимо .NET Framework 2.0 и выше, что уже предустановлено в ОС Windows. Версия сревера для Linux реализована на golang.
Серверная часть
Windows
Приложение устанавливается как служба «Сервер удаленной консультации», после установки службу необходимо запустить вручную. Служба работает на 45823 порту и ведет лог в журнале приложений. Никаких привязок клиентов к компьютеру нет. Служба принимает следующие параметры командной строки:
- port - номер порта, на котором будет работать служба, пример port=80;
- key - любая символьная строка, используется для запроса к службе по протоколу HTTP для получения списка активных пользователей в формате csv, key=12ff333d66ererd. Пример запроса, если сервис работает на 45823 порту: http://имя_сервера:45823/?key=12ff333d66ererd&command=list. На данный момент поддерживается одна команда list, выводящая список всех подключенных клиентов с переданными пользовательскими данными user_data.
Для задания параметров службы необходимо в реестре в ветке:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Remote Help Service в параметре ImagePath дописать нужные параметры и перезапусть службу. Например для работы на 80 порту ключ ImagePath будет иметь вид: "C:\Program Files (x86)\Rh\Remote Help Service\RhService.exe" port=80
CentOS
Сервер выполнен в виде бинарного исполняемого файла и принимает только один параметр port, например rh_server -port=80. Пример запуска рассмотрен в связанной статье.
Клиентская часть
Взаимодействие между консультантом и пользователем осуществляется через клиентскую часть. Подключение к клиенту выполняет по номеру, который автоматически выдается при подключении к серверу. Номер к клиенту не привязывается. Из одного приложение можно выполнить подключение к одному клиенту. Клиентских приложений можно запустить неограниченное количество.
При клиентском взаимодействии можно управлять клавиатурой, мышью, обмен файлами и буфером обмена. Других функций нет. Функция обмена файлами поддерживает только обмен файлами за одну операцию.
Настройка качества передаваемого изображения представлена в двух вариантах настройках канала связи:
- нормальный (изображение с палитрой 8 bit). Данный вариант рекомендуемый;
- отличный (изображение с палитрой 16 bit).
Программа не сохраняет параметры подключения, для этого необходимо использовать параметры запуска. Эти же параметры можно использовать и при интеграции с 1С:
- ip – указывает сервер для подключения, пример, ip=localhost
- url - адрес страницы на доступном сайте, которая возвращает строку с адресом сервера для подключения, например, url=mysite/server. Возвращаемая строка должна иметь следующий вид:ip=myserver. Параметр ip имеет приоритет на url.
- client – параметры, указывает, что приложение запускается на клиенте, при этом все элементы на форме неактивны и по окончании сеанса, клиентское приложение закроется автоматически. Пример, client=true;
- palette - определяет размерность палитры передачи данных, напрямую зависит от качества канала связи. Возможные параметры 8, 16. Пример, palette=8.
- resolution - определяет разрешение экрана, на которое будет отображаться экран клиента. Используются для сжатия изображения для более удобной работы. Нижнее ограничение 1024x768, верхнее ограничение - это исходное изображение экрана клиента. Пример, resolution= 1440x900
- mouse - определяет отрисовывать ли курсор клиента или нет. Если параметр не установлен, то курсор клиента отрисовывается. Если значение false, то все изменения в состоянии курсора клиента отражаются на стороне консультанта в его текущем курсоре, то есть оба управляют одним курсором. Пример, mouse=false. По умолчанию значение параметра true.
- mouse_move - определяет передавать ли данные о движении курсора на клиент. При низкоскоростном канале отключение данного параметра уменьшит нагрузку на канал связи. Пример, mouse_move=false. По умолчанию значение параметра true, то есть данные о движении курсора передаются.
- user_data - любая последовательность символов, определяющих пользовательские данные. Данные затем можно получить командой list к серверу и использовать для анализа подключенных клиентов. Пример user_data="ФИО:Иванов Иван Иванович;ИНН=1122334455;Конфигурация:УТ 11"
В самой 1С делается внешняя обработка, добавляется макет с типом двоичные данные и загружается туда приложение.
При использовании обычных форм добавляется событие ПередОткрытием в обработку со следующим кодом:
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Отказ = Истина;
Макет = ПолучитьМакет("Имя макета с программой");
Путь = ПолучитьИмяВременногоФайла("exe");
Макет.Записать(Путь);
// вместо localhost адрес вашего сервера
ЗапуститьПриложение(Путь + " ip=localhost client=true");
КонецПроцедуры
Для управляемых форм во внешнюю обработку добавляется метод ПриОткрытии, при этом модуль оформлен в соответствии правилами оформления внешних обработок:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Отказ = Истина;
Адрес = ПолучитьАдресФайлаНаСервере();
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(Адрес);
УдалитьИзВременногоХранилища(Адрес);
Путь = ПолучитьИмяВременногоФайла("exe");
ДвоичныеДанныеФайла.Записать(Путь);
ЗапуститьПриложение(Путь + " ip=localhost client=true");
КонецПроцедуры
&НаСервере
Функция ПолучитьАдресФайлаНаСервере()
ОбъектФормы = РеквизитФормыВЗначение("Объект");
Макет = ОбъектФормы.ПолучитьМакет("Макет");
Возврат ПоместитьВоВременноеХранилище(Макет, УникальныйИдентификатор);
Исходный код
Исходный код можно найти в моем профиле на GitHub.(RhClient, RhServer_Windows, легкая реализация под Linux RhServer_Linux)
Обновление
Версия 2.1.2
Для обновления необходимо использовать новую версию клиента и сервера.
Изменения в версии:
1. Улучшена стабильность работы приложения.
Версия 2.1.1
Для обновления необходимо использовать новую версию клиента и сервера.
Изменения в версии:
1. Улучшена скорость передачи изображения.
Версия 2.1.0
Для обновления необходимо использовать новую версию клиента.
Изменения в версии:
1. Исправлена ошибка при эмулиции нажатия клавиш;
2. Добавлены примеры внешних обработок.
Версия 2.0.0
Для обновления необходимо использовать новую версию клиента и сервера.
Изменения в версии:
1. Добавлена возможность обмена файлами.
2. Убрана поддержка RDP Encoder Mirror Driver.
3. Улучшена работа буфера обмена между клиентами.
Версия 1.3.3
Для обновления необходимо использовать новую версию клиента и сервера.
Изменения в версии:
1. Добавлен параметр запуска сервера key, с помощью которого можно посылать команды серверу (list).
2. Добавлен на клиенте параметр user_data, определяющая последовательность пользовательских данных.
Версия 1.3.2
Для обновления необходимо использовать новую версию клиента.
Изменения в версии:
1. Добавлен в клиенте параметр, отвечающий за передачу координат курсора. Если установить значение в false, то координаты не передают, что уменьшает нагрузку на канал. Рекомендуется использовать при низкоскростном канале.
Версия 1.3.1
Для обновления необходимо использовать новую версию клиента.
Изменения в версии:
1. Добавлен в клиенте параметр, отвечающий за показ отрисовки курсора клиента (mouse), по умолчанию данных параметр установлен в true. Если установить значение в false, все изменения в состоянии курсора отражаются на текущем курсоре консультанта.
Версия 1.3
Для обновления необходимо переустановить службу и использовать новую версию клиента.
Изменения в версии:
1. Добавлен параметр для работы службы на определенном порту;
2. Исправлены ошибки в клиенте при масштабировании рисунка;
Версия 1.2
Для обновления необходимо использовать только новую версию клиента.
Изменения в версии:
1. Добавлена возможность динамически масштабировать изображения в момент работы, изменяя размер рабочего окна.
Для этого добавлен переключатель в рабочем окне, который имеет два состояния: масштаб исходный (картинка имеет исходный размер клиента), масштаб по ширине (картинка масштабируется по ширине рабочего окна, изменяя размер окна, картинка подстраивается под размер).
2. Добавлен параметр командной строки url.
Версия 1.1
Для обновления необходимо переустановить службу (удалить старую и установить новую) и использовать новую версию клиента.
Изменения в версии:
1. Добавлена поддержа mirror driver (RDP Encoder Mirror Driver) для Windows Vista, Windows 7 и некоторые версии Windows Server;
2. Добавление масштабирование изображения под нужное разрешение;
3. Улучшение производительности передачи данных.