Extensibilidad de ThingWorx > Extensiones > Acceso remoto > Uso del widget RAClientLinker
Uso del widget RAClientLinker
En ThingWorx Remote Access Extension (RAE) se incluye el widget RAClientLinker que se puede utilizar para crear una interfaz de usuario propia, mediante ThingWorx Mashup Builder. Este widget facilita el inicio de una sesión remota, el inicio del cliente y la detección de si el cliente está instalado en el sistema del usuario. En este tema se supone que el usuario está familiarizado con Mashup Builder, tiene la licencia adecuada para la aplicación y ha aprendido a utilizarlo. El foco se encuentra en el widget.
En este tema se incluyen las siguientes secciones:
El RAClientLinker Widget
Los widgets permiten crear mashups con funcionalidad empaquetada previamente. El widget RAClientLinker no es una excepción. Tiene las propiedades comunes a todos los widgets, así como las propiedades que son específicas de la creación de sesiones remotas con dispositivos Edge que actualmente están en el estado isReporting. Se debe tener en cuenta que las cosas que representan los dispositivos Edge deben implementar la definición de cosa RemoteAccessible.
Para obtener información específica sobre el uso de Mashup Builder y widgets, consulte la documentación de ThingWorx Mashup Builder.
El widget RAClientLinker funciona para todos los tipos de sesiones de acceso remoto. El usuario puede vincular la propiedad RemoteEndpoint del widget a un valor válido. Normalmente, esto se hace enlazando la propiedad a una fila devuelta por el servicio GetRemoteAccessibleEndpoints en la definición de cosa RemoteAccessProvider.
Al desarrollar un mashup, no es necesario llamar al servicio StartSession si se utiliza el widget RAClientLinker. Basta con definir las propiedades ThingName, RemoteEndpoint y ProviderConfig en el widget y estas se transfieren al servicio StartSession. La propiedad ProviderConfig es JSON que se formatea específicamente con el tipo de RemoteAccessProvider que se utiliza, ya sea la cosa ThingWorxInternalRemoteAccessProvider para agentes de AlwaysOn de ThingWorx como, por ejemplo, WS EMS, o la cosa GASRemoteAccessProvider para los agentes de Axeda eMessage.
Adición del widget a un mashup
Al importar ThingWorx Remote Access Extension (RAE) a ThingWorx Platform, el widget está disponible como RemoteAccessClientLinker en la vista IDE de Mashup Builder, tal como se muestra a continuación:
Desde allí, se puede arrastrar una instancia del widget al mashup. Se debe tener en cuenta que, aunque se muestre en la interfaz de usuario de IDE, no hay una representación visible de este widget en el mashup real en tiempo de ejecución. De forma similar a un widget Expresión, en el mashup se verá lo siguiente:
Una vez que se haya arrastrado al mashup, se puede seleccionar, mover y arrastrar elementos enlazables al widget para conectar sus propiedades y servicios. La ubicación del widget en el mashup es irrelevante para su función.
Selección de una cosa e inicio de una sesión
Para permitir que los usuarios seleccionen una cosa en tiempo de ejecución y, a continuación, iniciar una sesión a través del widget, siga estos pasos:
1. Añada un widget EntityPicker al mashup para permitir que los usuarios seleccionen una cosa en tiempo de ejecución.
2. Enlace el contenido del widget EntityPicker a la propiedad ThingName del widget RAClientLinker. En el widget EntityPicker, seleccione añadir un enlace de datos salientes al widget RAClientLinker. Asegúrese de que todas las cosas que serán visibles para los usuarios implementen la definición de cosa RemoteAccessible. En tiempo de ejecución, el nombre de cosa que el usuario selecciona en el widget EntityPicker se transfiere al widget RAClientLinker.
3. A continuación, busque la propiedad RemoteEndpoint. Esta propiedad es necesaria para iniciar una sesión y suele hacer referencia a la aplicación en el dispositivo remoto con el que se intenta iniciar una sesión. Enlace esta propiedad a un valor derivado de otro widget. Este valor debe coincidir con el valor de name de un extremo del servicio GetRemoteAccessibleEndpoints en la cosa.
4. La propiedad ProviderConfig del widget representa las propiedades adicionales específicas del proveedor que son necesarias o que RemoteAccessProvider (GAS o ThingWorx Internal) utiliza que facilita la sesión. Si esta propiedad es opcional depende del proveedor. Esta propiedad se representa como un blob de JSON y se debe enlazar como la salida de un widget Expresión o algo similar que pueda montar un bloque JSON a partir de otras entradas de mashup.
5. La propiedad SessionId es enlazable de entrada y salida, lo que permite enlazar de entrada el ID de una sesión que ya existe o enlazar de salida si el widget había iniciado una sesión previamente. Si el ID de sesión se enlaza de entrada desde otro lugar, este ID de sesión tiene prioridad y el widget no intenta iniciar una nueva sesión. Se puede utilizar este ID de sesión para arrancar el cliente si ya existe una sesión o para proporcionar el ID de sesión a otro elemento. Ambos casos son útiles para implementar la lógica de reintento.
6. Una vez definidas las propiedades, se puede iniciar la sesión invocando el servicio LaunchClient:
El servicio LaunchClient permite realizar las siguientes acciones:
a. Permite iniciar la sesión.
b. Permite iniciar el Remote Access Client (RAC).
c. Permite detectar si el RAC se inicia correctamente.
Gestión del arranque del cliente
El widget RAClientLinker lanza varios eventos como parte del servicio LaunchClient:
SessionCreated: se arranca cuando la sesión se ha iniciado y el widget está a punto de intentar arrancar el cliente con la sesión creada.
AwaitingLaunch: se arranca después de que el cliente haya intentado arrancar.
ClientLaunched: se arranca si el widget detecta que el cliente se ha arrancado correctamente. Este evento se utiliza para indicar que la sesión se ha iniciado correctamente y que el cliente se ha arrancado correctamente.
ClientNotInstalled: se arranca si el widget detecta que el cliente no se ha arrancado. Este evento solo indica que el cliente no se ha vuelto a conectar a ThingWorx Platform. La sesión se ha iniciado y puede agotar el tiempo de espera debido a la inactividad.
Detección de si el cliente está instalado
El widget RAClientLinker detecta si el cliente está instalado. Para ello espera a que 'llame' a la plataforma una vez arrancado. Al detectar esta llamada, el widget puede identificar positivamente que el usuario tiene instalado el cliente. Si el cliente no llama durante un período de tiempo de espera configurado, el widget puede estar razonablemente seguro de que el usuario no tiene instalado el cliente o que el cliente tiene problemas para conectarse a la plataforma.
Este período de tiempo de espera se puede configurar en la página de configuración de RemoteAccessSubsystem. El valor por defecto es 10 segundos. Antes de cambiar este valor, se debe tener en cuenta que el evento ClientNotInstalled no se arranca hasta que haya vencido todo el período de tiempo de espera. Si se define en un valor demasiado alto, es posible que haya que esperar un tiempo prolongado antes de que se proporcione feedback. A continuación se muestra la parte relevante de la página Configuración del subsistema:
Servidor del lado del usuario (local)
Como parte de la conexión a una sesión remota, todas las implementaciones de acceso remoto disponibles proporcionan un servidor que es local para el ordenador del usuario. El cliente de acceso remoto notifica a los usuarios de un puerto local disponible al que se pueden conectar independientemente de la aplicación cliente que estén utilizando para esa sesión, como SSH o VNC (escritorio). Para impedir que cualquier usuario acceda a este servidor desde fuera del ordenador del usuario (por ejemplo, si tiene acceso a la dirección IP del ordenador del usuario), el servidor del lado del cliente solo escucha en la interfaz de bucle invertido del ordenador local. Esto significa que cualquier intento de conectarse a ese servidor con la IP del ordenador no funcionará. Todas las conexiones deben realizarse en una dirección de bucle invertido (127.0.0.1).
* 
La tunelización de ThingWorx Edge no soporta protocolos que realicen varias conexiones y desconexiones desde el dispositivo Edge, como el uso de un explorador para acceder a un servidor HTTP. Por ejemplo, los activadores de RDP se desconectan cuando se utilizan credenciales incorrectas y cuando se conecta a un servidor RDP que no es de confianza para el ordenador. Para ser más eficaz, asegúrese de comprender el comportamiento de la conexión y la desconexión del protocolo que se está intentando reenviar.
* 
No se debe utilizar localhost en lugar de la dirección IP, 127.0.0.1, porque puede resolverse en una dirección IPv6 que no funcionará correctamente.