Composer의 ThingWorx 모델 정의 > 시스템 > 하위 시스템 > WebSocket 통신 하위 시스템
WebSocket 통신 하위 시스템
WebSocket(WS) 통신 하위 시스템은 핵심 WS 통신을 처리합니다.
구성
바인딩 보호 설정
설정
기본 유형
기본값
설명
바인딩 보호 정책
STRING
First-in-wins
메뉴에서 원하는 보호 정책 바인딩을 선택합니다. 이 정책은 기본적으로 First-in wins입니다. 이 정책은 플랫폼에서 이미 바인딩된 에지 장치로부터 새 바인딩 시도를 받을 경우 새 바인딩 시도를 거부함을 의미합니다.
Last-in wins 정책은 이미 바인딩된 장치에 대해 새 바인딩을 거부하는 대신 플랫폼에서 새 바인딩을 수락하고 메시지가 에지로 전송되는 방법에 대한 라우팅 규칙을 업데이트해야 함을 의미합니다.
WebSocket 통신 설정
설정
기본 유형
기본값
설명
유휴 연결 제한 시간(초)
INTEGER
60
연결이 설정되면 WebSocket 통신 하위 시스템은 연결이 종료되기 전에 지정된 시간(초)동안 대기합니다. 작업이 있는 경우 유휴 타이머가 재설정됩니다.
유휴 Ping 속도(초)
INTEGER
45
ThingWorx는 클라이언트의 ping에 대해 지정된 시간(초) 동안 대기합니다. ping이 수신되면 통신 주기가 계속됩니다.
지정된 시간(초)에서 ping 요청에 대해 pong이 수신되지 않으면 SDK가 연결을 해제하며 다시 연결하려고 시도합니다. 연결이 해제되면 소켓, ThingWorx 연결, WebSocket 연결, TLS 연결 및 OS 수준 소켓이 종료됩니다. 다시 연결하면 이러한 연결 레이어에 대한 새 버전이 생성됩니다. 이는 인증의 각 레이어가 성공했다고 가정합니다.
인증 메시지 대기 시간(초)
INTEGER
15
연결이 설정된 후 원격 서버는 인증을 위해 지정된 시간 동안 대기합니다. 인증이 수신되지 않으면 소켓이 종료됩니다.
제한 시간이 초과되기 전에 요청이 응답 메시지를 기다리는 시간(초)
INTEGER
30
서버가 온라인 상태이며 요청이 실패할 경우 오류가 발생합니다.서버가 오프라인 상태인 경우 서버가 다시 온라인 상태가 될 때까지 요청이 대기열에 배치됩니다.
메시지 또는 터널 트래픽 전송 후 ping 보내기
BOOLEAN
True
클라이언트에서 플랫폼으로 메시지를 전송한 후 ping을 보냅니다. 이 설정은 연결을 생성할 때 적용됩니다.
비동기 구성 설정
설정
기본 유형
기본값
설명
최대 스레드 수
NUMBER
10
에지 장치에 대한 송신 통신에 사용되며 원격 사물과 통신하는 데 사용할 수 있는 스레드 수를 지정합니다. 송신 통신의 예로 원격 사물에서 원격 서비스를 실행합니다. 지정된 값을 초과하는 모든 요청은 대기열로 전송됩니다.
클라이언트 끝점 설정
설정
기본 유형
기본값
설명
끝점 이름
STRING
해당 없음
사용자 정의 이름입니다.
끝점 URI
STRING
해당 없음
페더레이션할 원격 서버의 URI입니다.
최대 끝점 연결
INTEGER
1
원격 서버에 열린 연결 수입니다.
유휴 Ping 속도(초)
INTEGER
45
두 서버를 페더레이션할 때 사용됩니다. 유휴 ping 속도는 서버가 ping을 원격 서버로 보내는 횟수를 지정합니다. 이는 서버가 유휴 상태이므로 중간 시스템이 서버를 종료하지 않도록 연결을 활성 상태로 유지하며, 원격 서버가 유휴 상태이므로 종료되는 것을 방지합니다.
응용 프로그램 키
PASSWORD
해당 없음
암호 변경 버튼을 클릭하면 암호 변경 화면이 나타납니다. 여기에 새 응용 프로그램 키를 입력할 수 있습니다.
서비스
WSCommunicationsSubsystem의 서비스를 통해 관리자는 ThingWorx Platform에 연결된 AlwaysOn WebSocket을 질의하고 닫을 수 있습니다.
* 
관리자만 WSCommunicationsSubsystem의 서비스를 사용할 수 있습니다.
원격 사물 외에도 현재 플랫폼에 연결되어 있는 항목을 알려면 다음 단계를 수행하십시오.
1. QueryEndpointSessions 서비스를 실행하여 현재 열려 있는 연결 수와 함께 지정된 끝점에 바인딩된 사물 수를 얻습니다. 이 서비스에 대한 자세한 내용은 아래 표를 참조하십시오.
2. GetBoundThingsForEndpoint 서비스를 실행하여 어떤 끝점에 어떤 사물이 바인딩되어 있는지 확인합니다. 이 서비스에 대한 자세한 내용은 아래 표를 참조하십시오.
3. 제공된 연결이 손상되었거나 이와 달리 종료되어야 하는 경우 CloseEndpointSessions 서비스를 실행하여 연결을 닫습니다.
* 
정기적 간격으로 만료된 응용 프로그램 키를 가진 장치의 연결을 끊는 CloseEndpointSessions 서비스도 트리거할 수 있습니다. 다음은 만료된 응용 프로그램 키가 있는 장치를 식별하고 해당 연결을 닫는 샘플 스크립트입니다.

// This script is for informational and example purposes only, and you must
// configure/validate it to ensure that it meets your functional and security requirements.

// result: INFOTABLE dataShape: ""
var expiredKeysTable = Subsystems["UserManagementSubsystem"].GetApplicationKeyExpirationInfo({
expiredKeys: true /* BOOLEAN */ ,
unexpiredKeys: false /* BOOLEAN */
});

// Create InfoTable from EntityList DataShape
var params = {
infoTableName: "InfoTable",
dataShapeName: "EntityList"
};

// CreateInfoTableFromDataShape(infoTableName:STRING("InfoTable"), dataShapeName:STRING):INFOTABLE(EntityList)
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);

for (var i = 0; i < expiredKeysTable.rows.length; i++) {
var expirationInfoTable = expiredKeysTable.rows[i].expirationInfo.rows;
for (var j = 0; j < expirationInfoTable.length; j++) {

// Add the name and key to result InfoTable
var newEntry = new Object();
newEntry.name = expirationInfoTable[j].name;// STRING [Primary Key]
result1 = Subsystems["WSCommunicationsSubsystem"].CloseEndpointSessions({
appKeyName: expirationInfoTable[j].name /* APPLICATIONKEYNAME */
});
logger.warn("Number of closed Sessions: " + result1);
logger.warn("Expired application keys: " + expirationInfoTable[j].name);
}
}
* 
CloseEndpointSessions 서비스는 만료되지 않거나 그렇지 않은 경우 해당 서비스가 닫은 세션에서 사용하는 응용 프로그램 키를 무효화합니다. 제공된 응용 프로그램 키를 사용하여 장치의 연결을 해제하고 해당 장치가 다시 연결되지 않도록 하려면 먼저 해당 만료 날짜를 업데이트하여 응용 프로그램 키를 강제로 만료합니다. 그런 다음 이 서비스를 호출하여 세션을 닫습니다.
CloseEndpointSessions 서비스에 대한 자세한 내용은 아래 표를 참조하십시오.
서비스
설명
QueryEndpointSessions
이 서비스는 다음 매개 변수를 사용하여 끝점 세션을 질의합니다.
authenticationType(STRING)
appKeyName(APPLICATIONKEYNAME)
userName(USERNAME)
startedBefore(DATETIME)
startedAfter(DATETIME)
lastUsedBefore(DATETIME)
lastUsedAfter(DATETIME)
hasBoundThings(BOOLEAN)
hasMultipleConnections(BOOLEAN)
maxItems(NUMBER). 기본값은 500개 결과입니다.
이 서비스는 다음 필드를 포함하는 INFOTABLE을 반환합니다.
endpointId. 세션 자체가 아닌 끝점의 식별자입니다.
authenticationType. 예를 들어, "응용 프로그램 키" 또는 "사용자 자격 증명"입니다.
appKeyName 해당하는 경우 응용 프로그램 키의 이름입니다.
userContext. 서비스가 실행된 계정과 연관된 이름입니다. 이러한 모든 서비스에 대해 "관리자"가 됩니다.
startDate
lastUsedDate. ping을 제외합니다.
numberBoundThings. 이 끝점을 통해 바인딩된 사물의 수입니다.
numberConnections. 현재 열려 있는 연결 수입니다. ThingWorx Connection Server 또는 ThingWorx 커넥터의 경우 연결이 여러 개 있을 수 있습니다.
GetBoundThingsForEndpoint
이 서비스는 끝점 ID를 사용합니다. Composer UI에서 서비스를 호출하면 반환할 최대 행 수를 설정할 수 있습니다. 지정된 끝점에 바인딩된 사물 이름이 포함된 INFOTABLE을 지정된 최대 행 수까지 반환합니다.
이 서비스를 통해 관리자는 QueryEndpointSessions의 결과에 끝점을 포함하여 잠재적 메모리 문제를 겪지 않고 끝점에 바인딩될 사물을 결정할 수 있습니다.
CloseEndpointSessions
이 서비스는 maxItems를 제외하고 QueryEndpointSessions 서비스의 모든 매개 변수 또는 끝점 ID를 가져옵니다. 둘 다 제공되면 서비스는 오류를 반환합니다.
이 서비스는 조건과 일치하는 모든 세션을 닫습니다. 끝점을 지정할 때 QueryEndpointSessions 서비스에서 반환된 끝점 ID를 사용합니다.
이 서비스는 만료되지 않거나 그렇지 않은 경우 해당 서비스가 닫은 세션에서 사용하는 응용 프로그램 키를 무효화합니다. 따라서 제공된 응용 프로그램 키를 사용하여 장치의 연결을 해제하고 다시 연결되지 않도록 하려는 경우 먼저 응용 프로그램 키의 만료 날짜를 업데이트하여 응용 프로그램 키가 만료되도록 한 다음 이 서비스를 호출하여 세션을 닫아야 합니다.
감사 하위 시스템이 활성화된 경우 이 서비스의 호출을 감사합니다. 감사 메시지는 DEVICE_COMMUNICATIONS 카테고리에 속합니다. 감사 하위 시스템에 대한 자세한 내용은 감사 하위 시스템 및 해당 관련 항목을 참조하십시오.
* 
이 서비스는 ThingWorx Platform에 직접 연결된 장치의 끝점만 닫으려고 시도합니다. AlwaysOn Connection Server 및 직접 연결된 장치에 연결된 끝점을 닫으려면 대신 CloseEndpoints 서비스를 사용하십시오.
CloseEndpoints
이 서비스는 다음 매개 변수를 사용하여 끝점 세션을 질의합니다.
appKeyName(APPLICATIONKEYNAME)
endpointId(STRING)
둘 다 제공되면 서비스는 오류를 반환합니다.
이 서비스는 닫으려는 끝점 연결의 수를 나타내는 NUMBER를 반환합니다.
이 서비스는 제공된 appKeyName 또는 endpoint ID에 연결된 모든 끝점 연결을 닫습니다. 끝점을 지정할 때 QueryEndpointSessions 서비스에서 반환된 endpoint ID를 사용합니다.
* 
이 서비스는 해당 서비스가 닫은 세션에서 사용하는 응용 프로그램 키를 만료시키거나 무효화하지 않습니다. 따라서 제공된 응용 프로그램 키를 사용하여 장치의 연결을 해제하고 다시 연결되지 않도록 하려는 경우 먼저 응용 프로그램 키의 만료 날짜를 업데이트하여 응용 프로그램 키가 만료되도록 한 다음 이 서비스를 호출하여 세션을 닫아야 합니다.
감사 하위 시스템이 활성화된 경우 끝점 연결이 종료되는 이 서비스의 호출이 감사됩니다. 감사 메시지는 DEVICE_COMMUNICATIONS로 분류됩니다. 감사 하위 시스템에 대한 자세한 내용은 감사 하위 시스템 및 해당 관련 항목을 참조하십시오.
* 
이 서비스는 두 가지 주요 용도에 대해 기존 CloseEndpointSessions 서비스보다 선호됩니다.
응용 프로그램 키 이름으로 닫기
끝점 ID로 닫기
끝점 닫기는 AlwaysOn Connection Server의 끝점에 가장 적합합니다. 반환된 닫힌 끝점 수는 닫으려고 시도한 끝점 수입니다.
* 
관리자만 새 QueryEndpoints 서비스를 사용할 수 있습니다.
도움이 되셨나요?