ThingWorx Modelldefinition in Composer > System > Untersysteme > Untersystem für WebSocket-Kommunikation
Untersystem für WebSocket-Kommunikation
Das Untersystem für WebSocket (WS)-Kommunikation ist für die zentrale WS-Kommunikation verantwortlich.
Konfiguration
Bindungsschutz-Einstellungen
Einstellung
Basistyp
Standard
Hinweise
Bindungsschutz-Richtlinie
STRING
First-in-wins
Wählen Sie die gewünschte Bindungsschutz-Richtlinie aus dem Menü aus. Standardmäßig ist das die Richtlinie First-in wins. Diese Richtlinie bewirkt, dass die Plattform bei Eingang eines neuen Bindungsversuchs von einem Edge-Gerät, das bereits gebunden ist, diesen neuen Bindungsversuch ablehnt.
Die Richtlinie Last-in wins bewirkt, dass die Plattform eine neue Bindung für das bereits gebundene Gerät nicht ablehnt, sondern diese neue Bindung akzeptiert und die Routing-Regeln für das Senden von Meldungen an das Edge-Gerät aktualisiert.
WebSocket-Kommunikationseinstellungen
Einstellung
Basistyp
Standard
Hinweise
Leerlauf-Verbindungs-Timeout (Sek.)
INTEGER
60
Sobald die Verbindung hergestellt wurde, wartet das Untersystem für WebSocket-Kommunikation die angegebene Anzahl Sekunden, bevor die Verbindung heruntergefahren wird. Wenn es Aktivitäten gibt, wird der Leerlaufzeitgeber zurückgesetzt.
Leerlauf-Ping-Rate (Sek.)
INTEGER
45
ThingWorx wartet die angegebene Anzahl Sekunden auf einen Ping von einem Client. Wenn ein Ping empfangen wird, wird der Kommunikationszyklus fortgesetzt.
Wenn kein Pong für eine Ping-Anforderung in der angegebenen Anzahl Sekunden empfangen wird, wird das SDK getrennt und versucht, es erneut zu verbinden. Durch die Trennung der Verbindung werden der Socket, die ThingWorx Verbindung, die WebSocket-Verbindung, die TLS-Verbindung und der Socket auf Betriebssystemebene geschlossen. Durch das erneute Verbinden werden neue Versionen dieser Verbindungsschichten erstellt. Es wird davon ausgegangen, dass jede Authentifizierungsschicht erfolgreich ist.
Wartezeit bis zur Ausgabe der Authentifizierungsmeldung (Sek.)
INTEGER
15
Nachdem die Verbindung hergestellt wurde, wartet der Remote-Server die angegebene Zeit bis zur Authentifizierung.Wenn keine Authentifizierung erfolgt, wird der Socket heruntergefahren.
Zeit, die eine Anforderung auf eine Antwortmeldung wartet, bevor die Anforderung abläuft (Sek.)
INTEGER
30
Wenn der Server online ist und die Anforderung fehlschlägt, wird ein Fehler ausgegeben.Wenn der Server offline ist, wird die Anforderung in der Warteschlange platziert, bis der Server erneut online ist.
Ping nach dem Senden einer Meldung oder Tunnelverkehr senden
BOOLEAN
True
Sendet einen Ping, nachdem eine Meldung von einem Client an die Plattform gesendet wurde. Diese Einstellung wird beim Erstellen der Verbindung angewendet.
Asynchrone Konfigurationseinstellungen
Einstellung
Basistyp
Standard
Hinweise
Max. Thread-Anzahl
NUMBER
10
Wird für die ausgehende Kommunikation mit Edge-Geräten verwendet und gibt die Anzahl der verfügbaren Threads für die Kommunikation mit Remote-Dingen an. Ein Beispiel für eine ausgehende Kommunikation wäre die Ausführung eines Remote-Diensts für ein Remote-Ding. Alle Anforderungen über dem angegebenen Wert werden an eine Warteschlange gesendet.
Client-Endpunkt-Einstellungen
Einstellung
Basistyp
Standard
Hinweise
Endpunkt-Name
STRING
N/A
Benutzerdefinierter Name
Endpunkt-URI
STRING
N/A
URI des Remote-Servers für den Verbund
Maximale Endpunktverbindungen
INTEGER
1
Anzahl der offenen Verbindungen zum Remote-Server
Leerlauf-Ping-Rate (Sek.)
INTEGER
45
Wird für den Verbund von zwei Servern verwendet. Die Leerlauf-Ping-Rate gibt an, wie oft der Server einen Ping an den Remote-Server sendet. Sie sorgt dafür, dass die Verbindung bestehen bleibt, sodass Zwischensysteme den Server nicht aufgrund von Leerlauf herunterfahren, und verhindert, dass der Remote-Server die Verbindung aufgrund von Leerlauf herunterfährt.
Anwendungsschlüssel
PASSWORD
N/A
Wenn Sie auf die Schaltfläche Passwort ändern klicken, wird der Bildschirm Passwort ändern angezeigt. Hier können Sie einen neuen Anwendungsschlüssel eingeben.
Dienste
Die Dienste des Untersystems für WebSocket-Kommunikation ermöglichen einem Administrator das Abfragen und Schließen von AlwaysOn-Websockets, die mit ThingWorx Platform verbunden sind.
* 
Nur Administratoren sind berechtigt, die Dienste des Untersystems für die WebSocket-Kommunikation zu verwenden.
Wenn Sie wissen möchten, was außer Remote-Dingen derzeit mit der Plattform verbunden ist, führen Sie die folgenden Schritte aus:
1. Führen Sie den Dienst QueryEndpointSessions aus, um die Anzahl der an den angegebenen Endpunkt gebundenen Dinge zusammen mit der Anzahl der derzeit offenen Verbindungen abzurufen. Weitere Informationen zu diesem Dienst finden Sie in der Tabelle unten.
2. Führen Sie den Dienst GetBoundThingsForEndpoint aus, um zu ermitteln, welche Dinge an welche Endpunkte gebunden sind. Weitere Informationen zu diesem Dienst finden Sie in der Tabelle unten.
3. Wenn eine angegebene Verbindung kompromittiert wurde oder aus anderen Gründen heruntergefahren werden muss, führen Sie den Dienst CloseEndpointSessions aus, um die Verbindung zu schließen.
* 
Sie können den CloseEndpointSessions-Dienst auch auslösen, um Verbindungen zu Geräten mit abgelaufenen Anwendungsschlüsseln in regelmäßigen Abständen zu trennen. Im Folgenden finden Sie ein Beispielskript, das Geräte mit abgelaufenen Anwendungsschlüsseln identifiziert und ihre Verbindungen schließt:

// 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);
}
}
* 
Der CloseEndpointSessions-Dienst setzt kein Ablaufdatum für Anwendungsschlüssel, die von den Sitzungen verwendet werden, die der Dienst schließt, und macht diese auch nicht anderweitig ungültig. Wenn Sie Geräte mit einem angegebenen Anwendungsschlüssel trennen und verhindern möchten, dass die Geräte erneut verbunden werden, erzwingen Sie zuerst, dass der Anwendungsschlüssel abläuft, indem Sie sein Ablaufdatum aktualisieren. Rufen Sie dann diesen Dienst auf, um die Sitzungen zu schließen.
Weitere Informationen zum Dienst CloseEndpointSessions finden Sie in der Tabelle unten.
Dienst
Beschreibung
QueryEndpointSessions
Dieser Dienst verwendet die folgenden Parameter, um Endpunktsitzungen abzufragen:
authenticationType (STRING)
appKeyName (APPLICATIONKEYNAME)
userName (USERNAME)
startedBefore (DATETIME)
startedAfter (DATETIME)
lastUsedBefore (DATETIME)
lastUsedAfter (DATETIME)
hasBoundThings (BOOLEAN)
hasMultipleConnections (BOOLEAN)
maxItems (NUMBER). Der Standardwert sind 500 Ergebnisse.
Dieser Dienst gibt eine INFOTABLE mit den folgenden Feldern zurück:
endpointId. Die ID des Endpunkts, nicht der Sitzung selbst.
authenticationType. Beispiel: "Anwendungsschlüssel" oder "Benutzeranmeldeinformationen".
appKeyName Der Name des Anwendungsschlüssels, falls zutreffend.
userContext. Der Name, der dem Konto zugeordnet ist, unter dem der Dienst ausgeführt wurde. Für alle diese Dienste ist dies "Administrator".
startDate
lastUsedDate. Schließt Pings aus.
numberBoundThings. Die Anzahl der Dinge, die über diesen Endpunkt gebunden sind.
numberConnections. Die aktuelle Anzahl offener Verbindungen. Für einen ThingWorx Connection Server oder einen ThingWorx Konnektor können mehrere Verbindungen vorhanden sein.
GetBoundThingsForEndpoint
Dieser Dienst verwendet eine Endpunkt-ID. Wenn Sie den Dienst über die Composer-Benutzeroberfläche aufrufen, können Sie optional eine maximale Anzahl von Zeilen festlegen, die zurückgegeben werden sollen. Er gibt eine INFOTABLE mit den Namen der Dinge zurück, die an den angegebenen Endpunkt gebunden sind, und zwar bis zur angegebenen maximalen Anzahl von Zeilen.
Dieser Dienst ermöglicht es Administratoren, zu bestimmen, welche Dinge an welche Endpunkte gebunden sind, ohne potenzielle Speicherprobleme zu riskieren, indem Sie sie in die Ergebnisse von QueryEndpointSessions einschließen.
CloseEndpointSessions
Dieser Dienst verwendet entweder eine Endpunkt-ID oder alle Parameter aus dem Dienst QueryEndpointSessions, mit Ausnahme von maxItems. Wenn beide angegeben werden, gibt der Dienst einen Fehler zurück.
Dieser Dienst schließt alle Sitzungen, die den Kriterien entsprechen. Verwenden Sie bei der Angabe des Endpunkts eine Endpunkt-ID, die vom Dienst QueryEndpointSessions zurückgegeben wurde.
Dieser Dienst setzt kein Ablaufdatum für Anwendungsschlüssel, die von den Sitzungen verwendet werden, die der Dienst schließt, und macht diese auch nicht anderweitig ungültig. Wenn Sie beabsichtigen, Geräte unter Verwendung eines bestimmten Anwendungsschlüssels zu trennen und zu verhindern, dass sie erneut verbunden werden, sollten Sie zuerst ein Ablaufen des Anwendungsschlüssels erzwingen, indem Sie das Ablaufdatum aktualisieren, und dann diesen Dienst aufrufen, um die Sitzungen zu schließen.
Aufrufe dieses Diensts werden geprüft, wenn das Prüfungsuntersystem aktiviert ist. Die Prüfmeldungen gehören zur Kategorie DEVICE_COMMUNICATIONS. Informationen zum Prüfungsuntersystem finden Sie unter Prüfungsuntersystem und in den zugehörigen Themen.
* 
Dieser Dienst versucht nur, Endpunkte für Geräte zu schließen, die direkt mit ThingWorx Platform verbunden sind. Verwenden Sie für schließende Endpunkte, die mit einem AlwaysOn Connection Server und direkt verbundenen Geräten verbunden sind, stattdessen den Dienst CloseEndpoints.
CloseEndpoints
Dieser Dienst verwendet die folgenden Parameter, um Endpunktsitzungen abzufragen:
appKeyName (APPLICATIONKEYNAME)
endpointId (STRING)
Wenn beide angegeben werden, gibt der Dienst einen Fehler zurück.
Dieser Dienst gibt eine NUMBER zurück, die die Anzahl der Endpunktverbindungen mit versuchten Schließungen angibt.
Dieser Dienst schließt alle Endpunktverbindungen, die appKeyName oder endpoint ID zugeordnet sind. Verwenden Sie die vom Dienst QueryEndpointSessions zurückgegebene endpoint ID, wenn Sie den Endpunkt angeben.
* 
Dieser Dienst legt kein Ablaufdatum für die von den Sitzungen (die der Dienst schließt) verwendeten Anwendungsschlüssel fest und macht diese auch nicht ungültig. Wenn Sie beabsichtigen, Geräte unter Verwendung eines bestimmten Anwendungsschlüssels zu trennen und zu verhindern, dass sie erneut verbunden werden, müssen Sie zuerst ein Ablaufen des Anwendungsschlüssels erzwingen, indem Sie das Ablaufdatum aktualisieren, und dann diesen Dienst aufrufen, um die Sitzungen zu schließen.
Der Aufruf dieses Diensts, der zu Endpunktverbindungsschließungen führt, wird geprüft, wenn das Prüfungsuntersystem aktiviert ist. Prüfungsmeldungen werden unter DEVICE_COMMUNICATIONS kategorisiert. Informationen zum Prüfungsuntersystem finden Sie unter Prüfungsuntersystem und in den zugehörigen Themen.
* 
Dieser Dienst wird gegenüber dem vorhandenen Dienst CloseEndpointSessions für die beiden primären Verwendungen bevorzugt:
Nach Anwendungsschlüssel-Name schließen
Nach Endpunkt-ID schließen
Endpunktschließungen sind optimale Vorgehensweisen für Endpunkte auf einem AlwaysOn Connection Server. Die zurückgegebene Anzahl geschlossener Endpunkte entspricht der Anzahl der Endpunkte mit versuchten Schließungen.
* 
Nur Administratoren dürfen den neuen Dienst QueryEndpoints verwenden.
War dies hilfreich?