ThingWorx Remote Access Client (RAC)
Remote Access Client (RAC) предоставляется как механизм для использования функций удаленного доступа ThingWorx из пользовательского мэшапа или из модуля Remote Access and Control ThingWorx Asset Advisor. Для любого конечного пользователя, чтобы он мог подключиться к удаленному устройству, должен быть создан туннель между локальным компьютером и удаленным устройством. RAC включает этот туннель. RAC можно загрузить со страницы ThingWorx Remote Access Client Downloads (Загрузки клиента удаленного доступа ThingWorx).
Этот раздел содержит следующие подразделы.
Краткое руководство
1. Настройте экземпляр вещи в ThingWorx Composer, а затем соедините его со своей платформой ThingWorx. При настройке вещи убедитесь, что она соответствует следующим критериям удаленного доступа.
a. В вещи должен быть применен профиль вещи RemoteAccessible. Вещи Axeda eMessage Agent применяют эту форму автоматически.
b. Для вещи должен существовать соответствующий RemoteAccessProvider, сконфигурированный в свойстве RemoteAccessProvider.
c. Вещь должна передавать сообщения. Это означает, что свойство isReporting должно иметь значение ИСТИНА (помечено значком галочки). Вещь "отчетность" обычно является удаленным устройством, привязанным к ThingWorx Platform.
d. Для вещи должна быть сконфигурирована конечная точка туннеля. К хорошим кандидатам на тестирование относятся следующие протоколы:
SSH - для компьютера без компонентов рабочего стола, TCP-порт 22.
VNC - для компьютера с рабочим столом, TCP-порт 5900
* 
По конструкции туннель, созданный RAC, остается активным, пока ни одна из сторон не разрывает соединение. По этой причине туннелирование через устройства Edge ThingWorx не поддерживает протоколы, которые выполняют и разрывают несколько соединений с устройствами Edge, как при использовании браузера для доступа к серверу HTTP. Например, триггеры RDP отключаются при использовании неверных учетных данных и при подключении к серверу RDP, который не является доверенным для компьютера. Чтобы действовать максимально эффективно, убедитесь, что вы понимаете поведение соединения и отсоединения для протокола, который вы пытаетесь использовать для перенаправления.
2. Загрузите ThingWorx Remote Access Client (RAC) со страницы ThingWorx Remote Access Client Downloads (Загрузки клиента удаленного доступа ThingWorx).
3. Перейдите в расположение, в котором вы сохранили пакет, и запустите его, чтобы установить RAC. Например, на Windows выполните файл .exe. На Linux и OS X установите пакет.
4. Добавьте в мэшап виджет RAClientLinker. Дополнительные сведения см. в разделе Добавление виджета в мэшап .
5. Используя свой мэшап, запустите удаленную сессию с вещью Edge, для которой были выполнены настройка и соединение на шаге 1. Действия осуществляются в следующей последовательности.
a. Для выбранного экземпляра вещи в ThingWorx Platform запрашивается удаленная сессия вызовом сервиса StartSession в вещи.
b. Запускается приложение RAC (tw-ra-client).
c. Приложение RAC устанавливает соединение с сервером удаленного доступа и отображает информацию о сессии.
* 
Приложение RAC по умолчанию соединяется с использованием безопасности WebSocket (WSS). Если необходимо получить доступ к мэшапу через незашифрованную конечную точку HTTP (не рекомендуется), клиент RAC должен быть сконфигурирован так, чтобы разрешать подключение к незашифрованному веб-сокету (WS). Для этого измените файл config.json, чтобы он содержал элемент { "secure": false }. Обратитесь к маркированному списку на шаге 10 в разделе "Задания администратора по настройке удаленного доступа", чтобы увидеть расположение файла в вашей операционной системе. Отключение шифрования является небезопасным и ненадежным, поэтому не используйте его без абсолютной необходимости. Следует помнить, что приложение RAC может соединяться как с конечной точкой WSS, так и с WS, но не с обеими одновременно.
6. Соедините ваше приложение клиента с локальным портом. Приложение RAC перенаправляет данные клиента на сервер удаленного доступа (и на удаленное устройство) и обратно.
Изучение ThingWorx Remote Access Client (RAC)
Клиент, который может быть запущен, вызывается ThingWorx Remote Access Client (RAC). Этот клиент запустится при вызове сервиса LaunchClient в виджете RAClientLinker. В остальной части этого раздела приведено описание интерфейса пользователя этого клиента.
При запуске из мэшапа пользовательский интерфейс RAC может выглядеть следующим образом при запуске сессии:
Наименование вещи, с которой соединяется RAC, обозначено на приведенном выше снимке экрана как ra-test-agent. В окне сообщений отображается текущий статус, который в приведенном выше примере будет Server ready: connect client to <localhost:38367 (Готов к работе с сервером: соединить клиент с <localhost:38367). Значки, отображающиеся справа над окном сообщения, имеют следующий смысл:
- индикатор статуса соединения. Желтый цвет означает, что соединение установлено. В индикаторе включается анимация, которая показывает, что клиент выполняет какие-либо действия.
Ниже сообщения о статусе находится следующий список параметров.
Remote Entity - имя вещи, представляющей удаленное устройство в ThingWorx. В приведенном выше примере наименование вещи - ra-test-agent.
Remote Server - имя RemoteAccessProvider, используемое для установки удаленной сессии. В приведенном выше примере удаленный сервер представляет Axeda Global Access Server (GAS) с наименованием gas.ptciot.io.
Remote Endpoint - тип удаленного интерфейса для этой удаленной сессии. В приведенном выше примере тип удаленного интерфейса - TERMINAL, этот тип ссылается на интерфейсы SSH или Telnet.
Создал - имя пользователя, запустившего эту удаленную сессию. В приведенном выше примере имя пользователя - Administrator.
Время начала - день недели, дата, время и часовой пояс, когда удаленный сеанс был инициирован удаленным сервером. В приведенном выше примере сессия была начата в понедельник, 5 ноября 2018 г. в 17:13:14 (5:13:14 PM) в часовом поясе GMT.
Длительность - количество часов, минут и секунд, в течение которых продолжалась удаленная сессия, от инициализации до разъединения. В приведенном выше примере сессия была установлена на шесть секунд.
Передано байтов - количество байтов, переданных в процессе обмена между удаленным устройством и компьютером, на котором был запущен RAC. Для туннелей ThingWorxInternal (после готовности сервера на стороне устройства) значение вначале является ненулевым. В приведенном выше примере на удаленном устройстве выполняется агент Axeda eMessage. Сессия готова, но не была полностью установлена с помощью агента Axeda eMessage, поэтому это число равно 0.
При готовности сессии этот индикатор изменяется, и на зеленом фоне отображается номер используемого порта и сообщение о том, что сервер удаленного доступа готов к соединению с устройством:
* 
Можно щелкнуть номер порта, чтобы скопировать его и вставить в приложение клиента.
- щелкните значок черного квадрата, если нужно остановить текущую сессию.
- щелкните этот значок, чтобы удалить сессию с экрана. Если сессия еще не остановлена, щелкните этот значок, и сессия будет остановлена, а затем удалена с экрана.
На правой стороне верхней панели находятся следующие значки.
- этот значок показывает статус соединения с платформой ThingWorx. Появление галочки в зеленом облаке показывает, что соединение установлено.
- щелкните этот значок, чтобы отобразить меню для RAC:
Чтобы остановить все сессии, выберите в меню опцию Stop All Sessions. Заметьте, что для каждой сессии информация будет оставаться видимой, пока не будет нажата кнопка , чтобы удалить ее.
Если необходимо использовать прокси-сервер между компьютером и удаленным устройством, можно указать имя хост-компьютера и номер порта, которые нужно использовать, выбрав в меню опцию Proxy Settings.
* 
Важно отметить, что RAC можно запустить без аргументов для настройки параметров прокси. После сохранения настроек RAC будет продолжать использовать настройки прокси, которые были сконфигурированы при запуске мэшапом ThingWorx.
Для отображения информации о версии RAC выберите в меню опцию About:
Если вы готовы закрыть клиент, выберите в меню опцию Exit. При выходе выводится запрос на завершение всех активных сессий, если такие имеются.
Конфигурирование настроек прокси-сервера в интерфейсе пользователя
ThingWorx Remote Access Client (RAC) поддерживает изменение и сохранение настроек прокси, если конфигурация прокси не указана как параметр запроса.
* 
В настоящее время RAC не поддерживает аутентифицированные прокси.
Можно сконфигурировать настройки с помощью интерфейса пользователя RAC следующим образом:
1. Запустить RAC локально или из ThingWorx.
* 
При локальном запуске не будет соединения с ThingWorx, но по-прежнему можно сконфигурировать настройки прокси и сохранить их.
2. Выберите значок меню (три точки):
3. В меню выберите Proxy Settings.
4. Когда откроется окно настроек, укажите Хост-компьютер и Порт, которые следует использовать:
5. Щелкните Сохранить.
Соединения, осуществляемые RAC через прокси.
Если в RAC указана конфигурация прокси, следующие исходящие соединения устанавливаются через прокси-сервер с использованием туннелирования:
ThingWorx Platform с использованием протокола AlwaysOn.
Axeda Global Access Server (GAS) TCP.
ThingWorx Internal Remote Access Provider, с использованием протокола AlwaysOn.
Статус удаленных сессий
Клиент удаленного доступа (RAC) может обнаружить изменение CLOSE_REQUESTED в статусе удаленной сессии. Это изменение возникает, когда RemoteAccessSubsystem определяет, что удаленная сессия превысила максимальное время, в течение которого она может оставаться активной.
Чтобы обновить lastActivityTime для удаленной сессии, RAC периодически (каждые 20 секунд) обновляет сессию, чтобы обновить значение bytesTransferred для всех сессий, которые отвечают следующим условиям:
Переданные байты, отслеживаемые RAC, больше 0.
Переданные байты, отслеживаемые RAC, были изменены после последнего обновления сессии.
Статус сессии - не TERMINATED.
Если обновление сессии завершилось сбоем из-за того, что сессия больше не существует, статус сессии будет принудительно изменен на состояние TERMINATED. Это изменение эффективно останавливает обработку обновления байтов.
* 
Этот таймер включается/требуется только для клиентов ThingWorxInternalRemoteAccessProvider. Поскольку сервер Axeda Global Access (GAS) отправляет периодическое обновление статуса в соединитель ThingWorx eMessage, этот таймер не требуется для клиента GASRemoteAccessProvider. Клиентские сессии lastActivityTime для GAS обновляются автоматически.