TsgcWSPServer_sgcPropiedades › UseMatchesMask

UseMatchesMask Propiedad

Habilita la coincidencia de nombres de canal mediante máscaras en lugar de una coincidencia de cadena exacta.

Sintaxis

property UseMatchesMask: Boolean read FUseMatchesMask write FUseMatchesMask;

Valor Predeterminado

False

Observaciones

UseMatchesMask es una propiedad exclusiva de tiempo de ejecución: no está publicada en el Object Inspector, por lo que solo se puede establecer en código. Es public, no published.

De forma predeterminada, un argumento de canal (en Subscribe, Broadcast, Publish, ...) se compara con las suscripciones de una conexión mediante una comparación de cadena exacta. Cuando UseMatchesMask es True, el servidor expande en su lugar el argumento de canal como una máscara de Delphi (System.Masks.MatchesMask: comodines * y ?, además de conjuntos de caracteres como [abc]) frente al conjunto de nombres de canal que actualmente tienen al menos un suscriptor activo. Si la máscara no coincide con ningún canal activo, el argumento se utiliza como nombre de canal literal.

UseMatchesMask no es una coincidencia de filtros de tema MQTT. # y + no tienen ningún significado especial, y * coincide a través de / como cualquier otro carácter, no existe el concepto de segmento de ruta. Para comodines compatibles con MQTT, utilice en su lugar TsgcWSPClient_MQTT / TsgcWSPServer_MQTT.

Esta opción es más útil en el lado de publicación, para distribuir un mensaje a todos los canales que actualmente coincidan con un patrón:

oProtocol.Broadcast('payload', 'topic1/*');

Su utilidad es limitada en el lado de suscripción: un cliente que envía Subscribe('topic1/*') antes de que exista un suscriptor en algún canal concreto topic1/... simplemente queda suscrito al nombre de canal literal topic1/*, ya que todavía no hay nada frente a lo que la máscara pueda expandirse.

Ejemplo

// server side, enable mask matching for this protocol instance
sgcWSPServer_sgc1.UseMatchesMask := True;

// clients subscribe to concrete channel names
// sgcWSPClient_sgc1.Subscribe('topic1/a');
// sgcWSPClient_sgc2.Subscribe('topic1/b');

// publish once, delivered to every live channel matching the mask
sgcWSPServer_sgc1.Broadcast('payload', 'topic1/*');

Volver a Propiedades