MQTT 프로토콜
IoT 및 제약된 디바이스를 위해 설계된 경량 발행-구독 메시징 프로토콜이에요. MQTT 3.1.1 및 MQTT 5.0 명세를 모두 완전 지원해요.
IoT 및 제약된 디바이스를 위해 설계된 경량 발행-구독 메시징 프로토콜이에요. MQTT 3.1.1 및 MQTT 5.0 명세를 모두 완전 지원해요.
IoT 및 제약된 디바이스를 위한 경량 발행-구독 메시징이에요. WebSocket 또는 raw TCP 위에서 MQTT 3.1.1 및 MQTT 5.0을 완전 지원해요.
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
TsgcWebSocketClient를 TsgcWSPClient_MQTT와 짝지어 연결하고, OnMQTTConnect / OnMQTTPublish를 연결한 뒤 Subscribe와 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;
// Publish a retained QoS 1 message
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);
10개의 published 속성, 9개의 메서드, 13개의 이벤트 — TsgcWSPClient_MQTT 레퍼런스와 일치해요.
MQTTVersion이 CONNECT 패킷에 광고되는 버전을 선택해요 — MQTT 3.1.1 또는 MQTT 5.0이에요. ConnectProperties는 MQTT 5의 session-expiry, receive-maximum, packet-size, topic-alias, extended-auth 필드를 전달해요.
Client 속성을 TsgcWebSocketClient에 연결하면 WebSocket 위에서 MQTT를 실행해요. Broker로 TsgcWSMQTTBroker에 연결하면 1883/8883 포트의 네이티브 TCP 전송을 사용해요.
QoS 0, 1, 2로 발행하며 retain은 선택이에요. QoS 속성이 기본 레벨, 재시도 간격, 타임아웃을 제어해요. PublishAndWait은 브로커가 확인할 때까지 차단되므로 트랜잭션 발행에 유용해요.
LastWillTestament는 연결이 비정상적으로 끊어졌을 때 브로커가 이 클라이언트를 대신해 발행할 토픽, 페이로드, QoS, retain 플래그를 등록해요 — 디바이스 연결 해제를 알리는 깔끔한 방법이에요.
Subscribe / UnSubscribe는 +와 # 와일드카드가 포함된 토픽 필터를 받아요. OnMQTTPublish가 수신 메시지를 전달하고, OnMQTTPublishEx는 raw 바이트/스트림을 제공해요. 완전한 QoS 2 핸드셰이크는 OnMQTTPubRec, OnMQTTPubRel, OnMQTTPubComp로 노출돼요.
HeartBeat는 타이머로 PINGREQ를 보내며 조용한 브로커 단절을 감지해요. Authentication은 CONNECT에 UserName/Password를 전송해요. MQTT 5 향상된 인증: Auth를 호출하고 OnMQTTAuth에서 SCRAM 방식 챌린지를 처리하세요.
이 컴포넌트가 구현하는 프로토콜의 공인 출처예요.
컴포넌트 레퍼런스로 바로 이동하고, 바로 실행할 수 있는 데모 프로젝트를 받아보고, 체험판을 다운로드하세요.
| 온라인 도움말 — Protocol_MQTT 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요. | 열기 | |
| 데모 프로젝트 — Demos\Protocols\MQTT 바로 실행할 수 있는 예제 프로젝트예요. sgcWebSockets 패키지에 포함되어 있으니 아래에서 체험판을 다운로드해 보세요. | 열기 | |
| 기술 문서 (PDF) 이 컴포넌트의 기능, 빠른 시작, Delphi, C++ Builder, .NET 코드 샘플, 출처 참고 자료예요. | 열기 | |
| 사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요. | 열기 |