设置
|
基本类型
|
默认
|
注解
|
---|---|---|---|
绑定保护策略
|
STRING
|
First-in-wins
|
从菜单中选取所需的“绑定保护策略”。默认情况下,策略为 First-in wins。此策略表示如果平台接收到已绑定 Edge 设备的新绑定尝试,则平台会拒绝新的绑定尝试。
Last-in wins 策略表示不会拒绝已绑定设备的新绑定尝试,相反,平台应接受该新绑定,并更新发送至 Edge 的消息的路由规则。
|
设置
|
基本类型
|
默认
|
注解
|
---|---|---|---|
空闲连接超时 (秒)
|
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
|
用于为 Edge 设备的出口通信指定可与远程事物进行通信的线程数。 将在远程事物上执行远程服务的流出通信的示例。高于指定值的任何请求均会被发送到队列。
|
设置
|
基本类型
|
默认
|
注解
|
---|---|---|---|
端点名称
|
STRING
|
不适用
|
用户定义的名称
|
端点 URI
|
STRING
|
不适用
|
要与之联合的远程服务器的 URI
|
最大端点连接数
|
INTEGER
|
1
|
向远程服务器开放的连接数
|
空闲 Ping 速率 (秒)
|
INTEGER
|
45
|
在联合两台服务器时使用。空闲 ping 速率指定服务器向远程服务器发送 ping 的频率。它可使连接处于活动状态,这样中间系统不会因为空闲而关闭服务器,并且可以防止远程服务器由于空闲而关闭连接。
|
应用程序密钥
|
PASSWORD
|
不适用
|
单击“更改密码”按钮时,“更改密码”屏幕随即出现。可在此处输入新的应用程序密钥。
|
|
只有管理员可以使用 WSCommunicationsSubsystem 的服务。
|
|
您还可以触发 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 服务不会过期,否则该服务关闭的会话所使用的任何应用程序密钥均会失效。如果要使用给定的应用程序密钥断开设备,并防止设备重新连接,请首先通过更新应用程序密钥的到期日期来强制其过期。然后,调用此服务来关闭会话。
|
服务
|
说明
|
---|---|
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。与运行服务时所使用的帐户关联的名称。对于所有这些服务,此名称为 "Administrator"。
• startDate
• lastUsedDate。排除 ping。
• numberBoundThings。绑定到此端点的事物数。
• numberConnections。当前打开的连接数。对于 ThingWorx Connection Server 或 ThingWorx 连接器,可以有多个连接。
|
GetBoundThingsForEndpoint
|
此服务使用端点 ID。通过 Composer UI 调用此服务时,可以选择性地设置要返回的最大行数。它会返回 INFOTABLE,其中包含绑定到指定端点的事物的名称,该名称最长可达指定的最大行数。
此服务可供管理员确定将哪些事物绑定到哪些端点,而不会将其包含在 QueryEndpointSessions 的结果中而导致潜在的内存问题。
|
CloseEndpointSessions
|
此服务可采用端点 ID 或 QueryEndpointSessions 服务中的所有参数,但 maxItems 除外。如果将两者同时提供给服务,则会返回错误。
此服务会关闭与此条件匹配的所有会话。指定端点时,请使用由 QueryEndpointSessions 服务返回的端点 ID。
此服务不会过期,否则该服务关闭的会话所使用的任何应用程序密钥失效。因此,如果要使用给定的应用程序密钥断开设备连接并防止其重新连接,则应首先通过更新应用程序密钥的到期日期来强制其过期,然后再调用此服务来关闭会话。
|