Definición del modelo de ThingWorx en Composer > Sistema > Subsistemas > Subsistema de comunicaciones Websocket
Subsistema de comunicaciones Websocket
El subsistema de comunicaciones WebSocket (WS) gestiona comunicaciones WS principales.
Configuración
Configuración de protección de enlace
Configuración
Tipo base
Por defecto
Notas
Directiva de protección de enlace
STRING
First-in-wins
Elija el valor de Directiva de protección de enlace que desee en el menú. Por defecto, la directiva es First-in wins. Esta directiva significa que si la plataforma recibe un nuevo intento de enlace de un dispositivo de periferia que ya está enlazado, la plataforma rechaza el nuevo intento de enlace.
La directiva Last-in wins significa que, en lugar de rechazar un enlace nuevo para el dispositivo ya enlazado, la plataforma debe aceptar ese enlace nuevo y actualizar las reglas de distribución sobre cómo se envían los mensajes a la periferia.
Configuración de comunicaciones WebSocket
Configuración
Tipo base
Por defecto
Notas
Interrupción por tiempo de inactividad de conexión (segundos)
INTEGER
60
Una vez que se haya establecido la conexión, el subsistema de comunicaciones WebSocket espera el número especificado de segundos antes de cerrar la conexión. Si hay actividad, se reinicia el temporizador de inactividad.
Velocidad de ping de inactividad (segundos)
INTEGER
45
ThingWorx espera el número de segundos especificados para un ping de un cliente. Si se recibe un ping, el ciclo de comunicación continúa.
Si no se recibe un pong para una solicitud de ping en el número de segundos especificado, el SDK se desconectará e intentará volver a conectarse. La desconexión cerrará el socket, la conexión de ThingWorx, la conexión de WebSocket, la conexión de TLS y el socket de nivel de SO. La reconexión creará nuevas versiones de estas capas de conexión, suponiendo que cada capa de autenticación sea correcta.
Cantidad de tiempo que se debe esperar por el mensaje de autenticación (segundos).
INTEGER
15
Después de que se establezca la conexión, el servidor remoto espera la cantidad de tiempo especificada para la autenticación.Si la autenticación no se recibe, el socket se cierra.
Cantidad de tiempo que una solicitud esperará por el mensaje de respuesta antes de que se agote el tiempo de espera (segundos).
INTEGER
30
Si el servidor está en línea y la solicitud falla, se produce un error.Si el servidor está fuera de línea, la solicitud se coloca en la cola hasta que el servidor vuelva a estar en línea.
Enviar una interrogación (ping) después de enviar un mensaje o tráfico de túnel
BOOLEAN
True
Permite enviar una interrogación (ping) después de que un cliente envíe un mensaje a la plataforma. Esta configuración se aplica cuando se crea la conexión.
Opciones de configuración asíncrona
Configuración
Tipo base
Por defecto
Notas
Nº máx. de subprocesos
NUMBER
10
Se utiliza para las comunicaciones de salida a dispositivos Edge y especifica el número de subprocesos disponibles para comunicarse con cosas remotas. Un ejemplo de una comunicación de salida sería ejecutar un servicio remoto en una cosa remota. Cualquier solicitud por encima del valor especificado se envía a una cola.
Configuración de extremo de cliente
Configuración
Tipo base
Por defecto
Notas
Nombre de extremo
STRING
n/d
Nombre definido por el usuario
URI del extremo
STRING
n/d
URI del servidor remoto con el que se debe federar
Número máximo de conexiones de extremo
INTEGER
1
Número de conexiones abiertas al servidor remoto
Frecuencia de ping inactivo (segundos)
INTEGER
45
Se utiliza al federar dos servidores. La frecuencia de ping inactivo permite especificar con qué frecuencia el servidor envía un ping al servidor remoto. Mantiene la conexión activa de modo que los sistemas intermedios no cierran el servidor por estar inactivo y evita que el servidor remoto apague la conexión por estar inactiva.
Clave de aplicación
PASSWORD
n/d
Al pulsar el botón Cambiar contraseña, aparece la pantalla Cambiar contraseña. Aquí se puede introducir una nueva clave de aplicación.
Servicios
Los servicios de WSCommunicationsSubsystem permiten a un administrador consultar y cerrar AlwaysOn WebSockets con conexión a ThingWorx Platform.
* 
Solo los administradores pueden utilizar los servicios de WSCommunicationsSubsystem.
Si se desea conocer lo que está conectado actualmente a la plataforma además de las cosas remotas, siga estos pasos:
1. Ejecute el servicio QueryEndpointSessions para obtener el número de cosas enlazadas al extremo especificado, junto con el número de conexiones abiertas actualmente. Consulte la siguiente tabla para obtener más información sobre este servicio.
2. Ejecute el servicio GetBoundThingsForEndpoint para determinar qué cosas están enlazadas a qué extremos. Consulte la siguiente tabla para obtener más información sobre este servicio.
3. Si se pone en peligro una conexión determinada o se debe cerrar por otra causa, ejecute el servicio CloseEndpointSessions para cerrar la conexión.
* 
También se puede activar el servicio CloseEndpointSessions para desconectar dispositivos con claves de aplicación vencidas a intervalos periódicos. A continuación, se muestra un script de ejemplo en el que se identifican dispositivos con claves de aplicación vencidas y se cierran sus conexiones:

// 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);
}
}
* 
El servicio CloseEndpointSessions no provoca el vencimiento de las claves de aplicación que utilizan las sesiones que cierra, ni las invalida. Si desea desconectar dispositivos que utilizan una clave de aplicación determinada e impedir que los dispositivos se reconecten, primero fuerce el vencimiento de la clave de aplicación mediante la actualización de la fecha de vencimiento. A continuación, invoque este servicio para cerrar las sesiones.
Consulte la siguiente tabla para obtener más información sobre el servicio CloseEndpointSessions.
Servicio
Descripción
QueryEndpointSessions
Este servicio toma los siguientes parámetros para consultar las sesiones de extremo:
authenticationType (STRING)
appKeyName (APPLICATIONKEYNAME)
userName (USERNAME)
startedBefore (DATETIME)
startedAfter (DATETIME)
lastUsedBefore (DATETIME)
lastUsedAfter (DATETIME)
hasBoundThings (BOOLEAN)
hasMultipleConnections (BOOLEAN)
maxItems (NUMBER). El valor por defecto es 500 resultados.
Este servicio devuelve un objeto INFOTABLE en el que se incluyen los siguientes campos:
endpointId. Identificador del extremo, no de la propia sesión.
authenticationType. Por ejemplo, "clave de aplicación" o "credenciales de usuario".
appKeyName El nombre de la clave de aplicación, si procede.
userContext. El nombre asociado a la cuenta en la que se ha ejecutado el servicio. Para todos estos servicios, es "Administrador".
startDate
lastUsedDate. Excluye los pings.
numberBoundThings. Número de cosas enlazadas a través de este extremo.
numberConnections. El número actual de conexiones abiertas. Para una instancia de ThingWorx Connection Server o un conector de ThingWorx, puede haber varias conexiones.
GetBoundThingsForEndpoint
Este servicio toma un ID de extremo. Cuando se invoca el servicio desde la interfaz de usuario de Composer, se puede definir opcionalmente un número máximo de filas que devolver. Se devuelve un objeto INFOTABLE en el que se incluyen los nombres de las cosas enlazadas al extremo especificado, hasta el número máximo de filas especificado.
Este servicio permite a los administradores determinar qué cosas están enlazadas a qué extremos sin experimentar problemas potenciales de memoria al incluirlos en los resultados de QueryEndpointSessions.
CloseEndpointSessions
Este servicio toma un ID de extremo o todos los parámetros del servicio QueryEndpointSessions, excepto para maxItems. Si se proporcionan ambos, el servicio devuelve un error.
Este servicio cierra todas las sesiones que coinciden con los criterios. Al especificar el extremo, utilice el ID de extremo que el servicio QueryEndpointSessions ha devuelto.
Este servicio no provoca el vencimiento de las claves de aplicación que utilizan las sesiones que cierra, ni las invalida. Por este motivo, si se tiene previsto desconectar dispositivos con una clave de aplicación determinada e impedir que se vuelvan a conectar, primero se debe forzar el vencimiento de la clave de aplicación actualizando la fecha de vencimiento y, a continuación, invocar este servicio para cerrar las sesiones.
Las invocaciones de este servicio se auditan, si el subsistema de auditoría está activado. Los mensajes de auditoría se encuentran en la categoría DEVICE_COMMUNICATIONS. Para obtener información sobre el subsistema de auditoría, consulte Subsistema de auditoría y los temas relacionados.
* 
Este servicio solo intentará cerrar los extremos para los dispositivos conectados directamente a ThingWorx Platform. Para cerrar extremos conectados a un servidor de conexión AlwaysOn y dispositivos conectados directamente, utilice el servicio CloseEndpoints en su lugar.
CloseEndpoints
Este servicio toma los siguientes parámetros para consultar las sesiones de extremo:
appKeyName (APPLICATIONKEYNAME)
endpointId (STRING)
Si se proporcionan ambos, el servicio devuelve un error.
Este servicio devuelve un elemento NUMBER que indica el número de conexiones de extremo que se han intentado cerrar.
Este servicio cierra todas las conexiones de extremo asociadas con el objeto appKeyName proporcionado o el objeto endpoint ID. Utilice el objeto endpoint ID de que devuelve el servicio QueryEndpointSessions al especificar el extremo.
* 
Este servicio no provoca el vencimiento de las claves de aplicación que utilizan las sesiones que cierra, ni las invalida. Por este motivo, si se tiene previsto desconectar dispositivos con una clave de aplicación determinada e impedir que se vuelvan a conectar, primero se debe forzar el vencimiento de la clave de aplicación actualizando la fecha de vencimiento y, a continuación, invocar este servicio para cerrar las sesiones.
La invocación de este servicio que provoca el cierre de las conexiones de extremo se auditan si el subsistema de auditoría está activado. Los mensajes de auditoría se clasifican en DEVICE_COMMUNICATIONS. Para obtener información sobre el subsistema de auditoría, consulte Subsistema de auditoría y los temas relacionados.
* 
Este servicio es preferido sobre el servicio CloseEndpointSessions existente para los dos usos principales:
Cerrar por nombre de clave de aplicación
Cerrar por ID de extremo
Los cierres de los extremos son un intento de máximo esfuerzo para los extremos de un servidor de conexión AlwaysOn. El recuento devuelto de extremos cerrados es un recuento del número de extremos que se han intentado cerrar.
* 
Solo los administradores pueden utilizar el nuevo servicio QueryEndpoints.
¿Fue esto útil?