Composer 中的 ThingWorx 模型定義 > 系統 > 子系統 > WebSocket 通訊子系統
WebSocket 通訊子系統
WebSocket (WS) 通訊子系統負責處理核心 WS 通訊。
組態
繫結保護設定
設定
基礎類型
預設
註記
繫結保護政策
STRING
First-in-wins
從選單中選擇所需的「繫結保護政策」。依預設,政策為 First-in wins。此政策是指,如果平台從已繫結的 Edge 裝置收到新繫結嘗試,平台會拒絕新繫結嘗試。
Last-in wins 政策是指,平台應接受該新繫結並更新有關訊息如何傳送至 Edge 的傳輸規則,而不是拒絕已繫結裝置的新繫結。
WebSocket 通訊設定
設定
基礎類型
預設
註記
閒置連線逾時 (以秒計)
INTEGER
60
連線建立完成後,WebSocket 通訊子系統會先等候指定的秒數,然後再關閉連線。如果沒有活動,閒置計時器會重設。
閒置 Ping 速率 (以秒計)
INTEGER
45
ThingWorx 會在指定的秒數內等候來自用戶端的 ping。如果接收到 ping,通訊循環會繼續。
如果未在指定的秒數內接收到 ping 請求發出的 pong,SDK 會斷開連線,並嘗試重新連線。斷開連線會關閉通訊端、ThingWorx 連線、WebSocket 連線、TLS 連線和作業系統層級通訊端。重新連線會建立新版的連線層 (假如每一個驗證層均驗證成功)。
驗證訊息需要等候的時間量 (以秒計)
INTEGER
15
建立連線之後,遠端伺服器會在指定的時間內等候完成驗證。如果未收到驗證,通訊端就會關係。
請求在逾時之前等候回應訊息的時間量 (以秒計)
INTEGER
30
如果伺服器在線上而請求失敗,則會發生錯誤。如果伺服器離線,系統就會將請求排入佇列,直到伺服器重新上線。
傳送訊息或通道流量後傳送 ping
BOOLEAN
True
從用戶端將訊息傳送至平台後傳送 ping。建立連線時會套用此設定。
非同步組態設定
設定
基礎類型
預設
註記
最大執行緒計數
NUMBER
10
用於與 Edge 裝置的輸出通訊,可指定可與遠端物件通訊的執行緒數。輸出通訊的範例為在遠端物件上執行遠端服務。任何超出指定值的請求均會被傳送至佇列。
用戶端端點設定
設定
基礎類型
預設
註記
端點名稱
STRING
n/a
使用者定義名稱
端點 URI
STRING
n/a
欲聯合的遠端伺服器 URI
最大端點連線
INTEGER
1
開放供遠端伺服器使用的連線數
閒置 Ping 速率 (以秒計)
INTEGER
45
聯合兩個伺服器時使用。閒置 ping 速率可指定伺服器傳送 ping 至遠端伺服器的頻率。它會使連線維持使用中狀態,如此一來,中繼系統就不會因為伺服器閒置而關閉伺服器,也可避免遠端伺服器因連線閒置而關閉連線。
應用程式金鑰
PASSWORD
n/a
按一下「變更密碼」按鈕後,「變更密碼」畫面隨即顯示。您可在此輸入新的應用程式金鑰。
服務
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
此服務會使用端點 ID 或 QueryEndpointSessions 服務的所有參數,但 maxItems 除外。如果二者都提供,服務會傳回錯誤。
此服務會關閉符合條件的所有工作階段。當指定端點時,請使用已由 QueryEndpointSessions 服務傳回的端點 ID。
此服務不會到期或因其他原因使它所關閉之工作階段使用的任何應用程式金鑰無效。因此,如果想要使用指定應用程式金鑰斷開裝置並避免其重新連線,您應該先更新應用程式金鑰到期日來強制其到期,然後再呼叫此服務,以關閉工作階段。
若啟用稽核子系統,會稽核對於此服務的呼叫。稽核訊息分類在 DEVICE_COMMUNICATIONS 類別中。如需有關稽核子系統的資訊,請參閱 稽核子系統及其相關主題。