Protocolo MQTT
Cliente MQTT 3.1.1 y MQTT 5.0 nativo para Delphi, C++Builder y .NET. Mensajería de publicación/suscripción sobre WebSocket o TCP puro con QoS 0/1/2, mensajes retenidos, last will, alias de topic y suscripciones compartidas.
Cliente MQTT 3.1.1 y MQTT 5.0 nativo para Delphi, C++Builder y .NET. Mensajería de publicación/suscripción sobre WebSocket o TCP puro con QoS 0/1/2, mensajes retenidos, last will, alias de topic y suscripciones compartidas.
Una implementación MQTT de primer nivel que se ejecuta allí donde se ejecute el runtime de Delphi / .NET — desde servicios de escritorio hasta dispositivos móviles, dialogando con cualquier broker MQTT conforme al estándar.
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Todas las prestaciones de MQTT a nivel de cable — no solo publicar y suscribirse.
Entrega fire-and-forget, al menos una vez y exactamente una vez. El handshake de cuatro pasos de QoS 2 (PUBLISH → PUBREC → PUBREL → PUBCOMP) se expone íntegramente mediante eventos para la lógica de reintento o auditoría.
Asigne la propiedad Client a un TsgcWebSocketClient para ejecutar MQTT sobre WebSockets, o utilice el transporte TCP nativo de MQTT en el puerto 1883 / 8883 — el mismo componente, la misma API.
Marque las publicaciones como retenidas para que el broker entregue el último valor conocido a cualquier suscriptor futuro. Active o desactive la retención en cada llamada a Publish.
LastWillTestament registra un topic + payload que el broker publicará si el cliente se desconecta de forma abrupta — la forma canónica de señalar eventos de dispositivo offline.
Filtros de topic con comodines + (un único nivel) y # (múltiples niveles): sensors/+/temperature o devices/#.
Expiración de sesión, receive maximum, tamaño máximo de paquete, máximo de alias de topic, request response info, propiedades de usuario — todo accesible a través de ConnectProperties, PublishProperties y SubscribeProperties.
MQTT 5 permite que el cliente (y el broker) sustituyan nombres de topic largos por un alias entero de 2 bytes en publicaciones repetidas — un enorme ahorro para flujos de telemetría intensivos.
El formato $share/<group>/<topic> de MQTT 5 distribuye los mensajes entrantes en round-robin entre un grupo de suscriptores — el bloque de construcción para pools de workers horizontales.
Las propiedades MQTT 5 ResponseTopic y CorrelationData convierten pub-sub en RPC asíncrono — integrado en los eventos sin necesidad de framing adicional.
Paquete AUTH de MQTT 5 con AuthenticationMethod / AuthenticationData para desafíos tipo SCRAM — invoque Auth y gestione OnMQTTAuth.
HeartBeat envía PINGREQ en un intervalo configurable. El WatchDog reconecta automáticamente con retroceso exponencial y restablece las suscripciones.
Ejecute MQTTS en 8883 (TCP puro + TLS) o WSS en 443 con certificados de cliente. TLSOptions.IOHandler selecciona OpenSSL (multiplataforma) o SChannel (TLS del kernel de Windows).
Su framing ligero, baja sobrecarga y sesiones con estado convierten a MQTT en la elección por defecto para estos escenarios.
Los sensores transmiten lecturas de temperatura, vibración, GPS y batería sobre sesiones MQTT con keep-alive — incluso en enlaces inestables LTE/Cat-M/NB-IoT.
Canal de mando bidireccional con QoS 1 para rastreadores de flota, gateways OBD y estaciones de recarga de vehículos eléctricos — reconexión y reanudación sin pérdida de publicaciones.
Sustituya el polling OPC-UA por publicación/suscripción orientada a eventos. Los alias de topic y las suscripciones compartidas escalan a miles de PLCs y dispositivos de campo.
Iluminación, climatización (HVAC), cerraduras y sensores de presencia dialogando a través de Mosquitto o Home Assistant — el cliente Delphi se integra con la misma facilidad que cualquier nodo embebido.
El mismo componente dialoga con AWS IoT Core, Azure IoT Hub, Google Cloud IoT, IBM Watson, HiveMQ Cloud y EMQX — con certificados de cliente X.509 o tokens SAS.
MQTT sobre WebSocket en RabbitMQ Web-MQTT (puerto 15675) permite que el mismo broker envíe mensajes a clientes Delphi y dashboards JS a través de un único puerto TLS.
Sesiones MQTT de larga duración en iOS/Android con Last Will le ofrecen presencia y push ligero sin depender de un proveedor específico.
Desacople productores y consumidores a través de un broker central. Las suscripciones compartidas reparten el trabajo en round-robin entre un pool de servicios worker Delphi.
Cliente conforme a la especificación — verificado contra los brokers que nuestros clientes despliegan en la práctica.
Certificados de cliente X.509, SigV4 sobre WebSocket y cuotas del broker AWS IoT. Consulte la página dedicada de AWS IoT.
Tokens device-SAS, topics de twin/method y aprovisionamiento DPS. Consulte la página de Azure IoT Hub.
Superficie completa de propiedades MQTT 5, suscripciones compartidas, autenticación mejorada y HiveMQ Cluster.
El broker open-source de referencia — tanto MQTT 3.1.1 como 5.0, sobre TCP o WebSocket.
Broker enormemente escalable con suscripciones compartidas, motor de reglas y puente hacia Kafka. Drop-in.
Plugin MQTT sobre WebSocket en el puerto 15675 — el emparejamiento estándar para dashboards de navegador + Delphi.
Broker MQTT en clúster construido sobre Erlang/OTP — tanto el modo MQTT 3.1.1 como 5.0 superan la suite de pruebas.
El listener MQTT integrado en Apache ActiveMQ y el broker Artemis — coexistencia multiprotocolo con AMQP, STOMP y JMS.
Empareje un TsgcWebSocketClient con TsgcWSPClient_MQTT, asocie OnMQTTConnect / OnMQTTPublish, luego Subscribe y Publish.
uses
sgcWebSocket, sgcWebSocket_Protocol_MQTT_Client,
sgcWebSocket_Protocol_MQTT_Message;
var
WSClient: TsgcWebSocketClient;
MQTT: TsgcWSPClient_MQTT;
begin
WSClient := TsgcWebSocketClient.Create(nil);
WSClient.Host := 'www.esegece.com';
WSClient.Port := 15675;
MQTT := TsgcWSPClient_MQTT.Create(nil);
MQTT.Client := WSClient;
MQTT.Authentication.Enabled := True;
MQTT.Authentication.UserName := 'sgc';
MQTT.Authentication.Password := 'sgc';
MQTT.OnMQTTConnect := MQTTConnect;
MQTT.OnMQTTPublish := MQTTPublish;
WSClient.Active := True;
end;
procedure TForm1.MQTTConnect(Connection: TsgcWSConnection;
const Session: Boolean; const ReasonCode: Integer;
const ReasonName: string;
const ConnectProperties: TsgcWSMQTTCONNACKProperties);
begin
MQTT.Subscribe('sensors/temperature/#');
end;
procedure TForm1.MQTTPublish(Connection: TsgcWSConnection;
aTopic, aText: string;
PublishProperties: TsgcWSMQTTPublishProperties);
begin
Memo1.Lines.Add(aTopic + ': ' + aText);
end;
// Publicar un mensaje QoS 1 retenido
MQTT.Publish('sensors/temperature/room1',
'{"value":22.5,"unit":"C"}', mtqsAtLeastOnce, True);
// uses: sgcWebSocket, sgcWebSocket_Protocol_MQTT_Client
TsgcWebSocketClient *WSClient = new TsgcWebSocketClient(this);
WSClient->Host = "www.esegece.com";
WSClient->Port = 15675;
TsgcWSPClient_MQTT *MQTT = new TsgcWSPClient_MQTT(this);
MQTT->Client = WSClient;
MQTT->Authentication->Enabled = true;
MQTT->Authentication->UserName = "sgc";
MQTT->Authentication->Password = "sgc";
MQTT->OnMQTTConnect = MQTTConnect;
MQTT->OnMQTTPublish = MQTTPublish;
WSClient->Active = true;
void __fastcall TForm1::MQTTPublish(TsgcWSConnection *Connection,
UnicodeString aTopic, UnicodeString aText,
TsgcWSMQTTPublishProperties PublishProperties)
{
Memo1->Lines->Add(aTopic + ": " + aText);
}
MQTT->Publish("sensors/temperature/room1",
"{\"value\":22.5,\"unit\":\"C\"}", mtqsAtLeastOnce, true);
using esegece.sgcWebSockets;
var WSClient = new TsgcWebSocketClient();
WSClient.Options.Parameters = "/ws";
var MQTT = new TsgcWSPClient_MQTT();
MQTT.Client = WSClient;
MQTT.Authentication.Enabled = true;
MQTT.Authentication.UserName = "sgc";
MQTT.Authentication.Password = "sgc";
MQTT.HeartBeat.Enabled = true;
MQTT.HeartBeat.Interval = 5;
MQTT.OnMQTTConnect += (conn, session, code, name, props) => MQTT.Subscribe("sensors/temperature/#");
MQTT.OnMQTTPublish += (conn, topic, text, props) => Console.WriteLine(topic + ": " + text);
WSClient.Host = "www.esegece.com";
WSClient.Port = 15675;
WSClient.Active = true;
MQTT.Publish("sensors/temperature/room1",
"{\"value\":22.5,\"unit\":\"C\"}", TmqttQoS.mtqsAtLeastOnce, true);
Fuentes autorizadas de los protocolos que implementa este componente.
Acceda directamente a la referencia del componente, obtenga el proyecto de demo listo para ejecutar y descargue la versión de prueba.
| Ayuda en línea — Protocol_MQTT Referencia completa de propiedades, métodos y eventos de este componente. | Abrir | |
| Proyecto de demo — Demos\Protocols\MQTT Proyecto de ejemplo listo para ejecutar. Se incluye dentro del paquete sgcWebSockets — descargue la versión de prueba más abajo. | Abrir | |
| Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi, C++ Builder y .NET, y referencias a fuentes primarias — solo este componente. | Abrir | |
| Manual de usuario (PDF) Manual exhaustivo que cubre todos los componentes de la biblioteca. | Abrir |