ThingWorx 확장성 > 확장 프로그램 > 원격 액세스 > RAClientLinker 위젯 사용
RAClientLinker 위젯 사용
ThingWorx Remote Access Extension (RAE)에는 ThingWorx Mashup Builder를 사용하여 자신의 사용자 인터페이스를 작성하는 데 사용할 수 있는 RAClientLinker 위젯이 포함되어 있습니다. 이 위젯을 사용하면 보다 용이하게 원격 세션을 시작하고, 클라이언트를 실행하고, 클라이언트가 사용자 시스템에 설치되어 있는지 여부를 감지할 수 있습니다. 이 항목에서는 사용자가 Mashup Builder에 대해 잘 알고 있으며, 해당 응용 프로그램에 대한 적절한 라이선스를 가지고 있으며, 해당 응용 프로그램 사용 방법을 학습했다고 가정합니다. 여기서는 위젯에 집중합니다.
이 항목에는 다음 단원이 포함됩니다.
RAClientLinker Widget.
위젯을 사용하면 사전 패키지된 기능을 사용하여 매쉬업을 만들 수 있습니다. RAClientLinker 위젯에는 예외가 없습니다. 이 위젯에는 현재 isReporting 상태인 Edge 장치와 함께 원격 세션을 만들기 위한 속성은 물론 모든 위젯에 공통인 속성이 있습니다. 에지 장치를 나타내는 사물은 RemoteAccessible 사물 형태를 구현해야 합니다.
Mashup Builder 및 위젯을 사용하는 방법에 대한 자세한 내용은 ThingWorx Mashup Builder 설명서를 참조하십시오.
RAClientLinker 위젯은 모든 유형의 원격 액세스 세션에 대해 작동합니다. 위젯의 RemoteEndpoint 속성을 유효한 값으로 연결하는 작업은 사용자가 수행해야 합니다. 일반적으로 이 작업은 RemoteAccessProvider 사물 형태에서 GetRemoteAccessibleEndpoints 서비스에 의해 반환된 행에 속성을 바인딩하는 방식으로 수행됩니다.
매쉬업을 개발할 때 RAClientLinker 위젯을 사용 중인 경우 StartSession 서비스를 호출할 필요가 없습니다. 위젯에 ThingName, RemoteEndpointProviderConfig 속성만 설정하면 됩니다. 그러면 이러한 속성이 StartSession 서비스에 전달됩니다. ProviderConfig 속성은 사용 중인 RemoteAccessProvider 유형(WS EMS와 같은 ThingWorx AlwaysOn 에이전트용 ThingWorxInternalRemoteAccessProvider 사물 또는 Axeda eMessage 에이전트용 GASRemoteAccessProvider 사물)으로 특별히 서식이 설정된 JSON입니다.
매쉬업에 위젯 추가
ThingWorx Remote Access Extension (RAE)을 ThingWorx Platform으로 가져오면 아래에 나와 있는 대로 Mashup Builder의 IDE 보기에서 위젯을 RemoteAccessClientLinker로 사용할 수 있습니다.
이 위치에서 위젯의 인스턴스를 매쉬업으로 끌 수 있습니다. IDE UI에는 표시되지만 런타임에 실제 매쉬업에서 이 위젯의 렌더링이 표시되지 않습니다. 위젯과 마찬가지로 매쉬업에 다음이 표시됩니다.
이를 매쉬업으로 끌어 놓은 후에는 선택하고, 이동하고, 바인딩 가능 요소를 위젯으로 끌어서 해당 속성과 서비스를 연결할 수 있습니다. 매쉬업에서의 위젯 위치는 해당 함수와 관련이 없습니다.
사물 선택 및 세션 시작
런타임 시 사용자를 활성화하여 사물을 선택한 다음 위젯을 통해 세션을 시작하려면 다음 단계를 수행합니다.
1. 사용자가 런타임 시 사물을 선택할 수 있도록 매쉬업에 EntityPicker 위젯을 추가합니다.
2. EntityPicker 위젯의 콘텐츠를 RAClientLinker 위젯의 ThingName 속성에 바인딩합니다. EntityPicker 위젯에서 아웃바운드 데이터 바인딩을 RAClientLinker 위젯에 추가하도록 선택합니다. 사용자에게 표시되는 모든 사물이 RemoteAccessible 사물 형태를 구현하는지 확인합니다. 런타임에 EntityPicker 위젯에서 사용자가 선택하는 사물 이름이 RAClientLinker 위젯에 전달됩니다.
3. 다음으로 RemoteEndpoint 속성을 찾습니다. 이 속성은 세션을 시작하는 데 필요하며 일반적으로 세션 시작을 시도하는 원격 장치의 응용 프로그램을 나타냅니다. 이 속성을 다른 위젯에서 파생된 값에 바인딩합니다. 이 값은 사물에 대한 GetRemoteAccessibleEndpoints 서비스의 끝점 name 값과 일치해야 합니다.
4. 위젯의 ProviderConfig 속성은 세션을 용이하게 하는 RemoteAccessProvider(GAS 또는 ThingWorx Internal)에서 사용되거나 필요한 추가 공급자별 속성을 나타냅니다. 이 속성이 선택적 옵션인지 여부는 공급자에 따라 다릅니다. 이 속성은 JSON blob으로 표현되며 위젯의 출력 또는 다른 매쉬업 입력의 JSON 블록을 어셈블할 수 있는 유사한 항목으로 바인딩되어야 합니다.
5. SessionId 속성은 안쪽 및 바깥쪽으로 바인딩 가능하므로 사용자가 이미 존재하는 세션 ID를 안쪽으로 바인딩하거나 위젯이 이전에 세션을 시작한 경우 바깥쪽으로 바인딩할 수 있습니다. 세션 ID가 다른 곳에서 안쪽으로 바인딩된 경우 이 세션 ID가 우선 적용되며 위젯에서 새 세션 시작을 시도하지 않습니다. 이 세션 ID를 사용하면 세션이 이미 존재하는 경우 클라이언트를 실행하거나 다른 항목에 세션 ID를 제공할 수 있습니다. 두 경우 모두 다시 시도 로직을 구현하는 데 도움이 됩니다.
6. 속성이 설정되면 LaunchClient 서비스를 호출하여 세션을 실행할 수 있습니다.
LaunchClient 서비스는 다음 작업을 수행합니다.
a. 세션을 시작합니다.
b. Remote Access Client (RAC)를 시작하려고 시도합니다.
c. RAC를 성공적으로 시작하는지 여부를 감지합니다.
클라이언트 실행 처리
RAClientLinker 위젯은 LaunchClient 서비스의 일부로 여러 이벤트를 개시합니다.
SessionCreated - 세션이 시작되었으며 위젯이 생성된 세션과 함께 클라이언트 실행을 시도하려고 할 때 발생합니다.
AwaitingLaunch - 클라이언트가 실행을 시도한 후 발생합니다.
ClientLaunched - 위젯이 클라이언트가 성공적으로 실행했음을 감지하는 경우 발생합니다. 이 이벤트를 사용하면 세션이 성공적으로 시작되고 클라이언트가 성공적으로 실행되었음을 나타낼 수 있습니다.
ClientNotInstalled - 위젯이 클라이언트가 실행되지 않았음을 감지하는 경우 발생합니다. 이 이벤트는 클라이언트가 ThingWorx Platform에 다시 연결되지 않았다는 것을 나타냅니다. 세션이 시작되었으며 비활성으로 인해 시간이 초과될 수 있습니다.
클라이언트가 설치되었는지 감지
RAClientLinker 위젯은 클라이언트가 실행된 후 플랫폼에 '콜백'할 때까지 대기하여 클라이언트가 설치되었는지 여부를 감지합니다. 위젯은 이 콜백을 감지하여 사용자가 클라이언트를 설치했음을 분명히 확인할 수 있습니다. 클라이언트에서 구성된 시간 초과 기간 내에 다시 호출하지 않으면 위젯에서 사용자에게 클라이언트가 설치되어 있지 않거나 클라이언트가 플랫폼에 연결하는 데 문제가 있는 것으로 확신할 수 있습니다.
이 제한 시간 기간은 RemoteAccessSubsystem 구성 페이지에서 구성할 수 있습니다. 기본값은 10초입니다. 이 값을 변경하기 전에 이 전체 제한 시간 기간이 만료될 때까지 ClientNotInstalled 이벤트가 발생하지 않음을 명심하십시오. 이 값을 너무 높게 설정하면 피드백이 제공되기 전에 대기 시간이 길어질 수 있습니다. 다음은 하위 시스템 구성 페이지의 관련 부분입니다.
사용자 측(로컬) 서버
원격 세션에 연결하는 동안 사용 가능한 모든 원격 액세스 구현은 사용자의 컴퓨터에 로컬인 서버를 제공합니다. 원격 액세스 클라이언트는 해당 세션에서 사용 중인 응용 프로그램 클라이언트(예: SSH 또는 VNC(데스크톱))에 연결할 수 있는 사용 가능한 로컬 포트를 사용자에게 알립니다. 사용자 컴퓨터 외부에서 이 서버에 액세스할 수 없도록 방지하기 위해(예: 사용자 컴퓨터의 IP 주소에 대한 액세스 권한이 있는 경우) 클라이언트 측 서버는 로컬 컴퓨터의 루프백 인터페이스에서만 수신합니다. 이는 컴퓨터의 IP를 사용하여 해당 서버에 연결하려는 시도가 작동하지 않음을 의미합니다. 모든 연결은 루프백 주소(127.0.0.1)로 이루어져야 합니다.
* 
ThingWorx Edge 터널링은 브라우저를 사용하여 HTTP 서버에 액세스하는 것과 같이 에지에 여러 번 연결하거나 연결을 해제하기 위한 프로토콜을 지원하지 않습니다. 예를 들어, 잘못된 자격 증명을 사용하고 사용자의 컴퓨터에서 신뢰하지 않는 RDP 서버에 연결할 때 RDP 트리거가 연결 해제됩니다. 가장 효과적으로 사용하려면 전달하려는 프로토콜의 연결 및 연결 끊기 동작을 이해하고 있어야 합니다.
* 
IP 주소 127.0.0.1 대신 localhost를 사용하지 마십시오. 이 경우 올바르게 작동하지 않는 IPv6 주소로 확인될 수 있습니다.