Delphi MQTT 클라이언트 — 모든 MQTT 3.1 / 5.0 브로커에 연결
Delphi 및 C++Builder용 네이티브 MQTT 3.1.1 및 MQTT 5.0 클라이언트 컴포넌트. 발행, 구독, retained 메시지, last will, QoS 0/1/2, TLS, 공유 구독 및 전체 MQTT 5 속성 표면 — HiveMQ, Mosquitto, EMQX, AWS IoT Core 및 Azure IoT Hub에 대해 검증됨.
Delphi 및 C++Builder용 네이티브 MQTT 3.1.1 및 MQTT 5.0 클라이언트 컴포넌트. 발행, 구독, retained 메시지, last will, QoS 0/1/2, TLS, 공유 구독 및 전체 MQTT 5 속성 표면 — HiveMQ, Mosquitto, EMQX, AWS IoT Core 및 Azure IoT Hub에 대해 검증됨.
MQTT는 IoT, 텔레메트리, 모바일 푸시 및 연결된 차량을 위한 사실상의 메시징 프로토콜이에요. 프레이밍 바이트 하나도 작성하지 않고 Delphi 코드베이스에 가져오세요.
Delphi MQTT 클라이언트는 VCL 또는 FMX 애플리케이션이 OASIS MQTT 프로토콜 — 제약된 장치와 저대역폭, 고지연 네트워크용으로 설계된 경량 발행/구독 프로토콜 — 을 사용할 수 있게 해요. sgcWebSockets를 사용하면 Delphi 7부터 Delphi 13까지, 모든 Embarcadero 대상 플랫폼(Win32, Win64, Linux64, macOS, iOS, Android)에서 실행되는 단일 비시각적 컴포넌트 TsgcWSPClient_MQTT로 완전한 클라이언트 표면을 얻을 수 있어요.
컴포넌트는 동일한 코드 경로에 두 가지 주요 MQTT 버전을 구현해요: 오랫동안 배포된 MQTT 3.1.1(OASIS 표준, 2014년부터 거의 모든 IoT 브로커에서 사용)과 최신 MQTT 5.0(토픽 별칭, 세션 만료, 사용자 속성, 향상된 인증, 요청/응답 및 공유 구독 포함). 단일 속성인 Version이 둘 사이를 전환해요.
TsgcWSPClient_MQTT
네이티브 TCP (1883 / 8883), WebSocket (80 / 443), OpenSSL 또는 SChannel을 통한 TLS
MQTT 3.1.1 & MQTT 5.0
Windows, macOS, Linux, iOS, Android, .NET
사양 준수 클라이언트는 원칙적으로 브로커에 구애받지 않아요 — 그러나 실제 브로커는 특이점이 있어요. 우리는 고객이 실제로 배포하는 브로커에 대해 각 릴리스를 테스트해요.
전체 MQTT 5 속성 표면, 공유 구독, 향상된 인증 및 HiveMQ Cluster. 무료 클라우드 계층은 컴포넌트를 처음부터 끝까지 시도해 보는 가장 쉬운 방법이에요.
참조 오픈 소스 브로커. docker run -p 1883:1883 eclipse-mosquitto로 로컬에서 실행하면 30초 안에 개발 대상이 됩니다.
규칙 엔진, Kafka 브리지 및 공유 구독이 있는 대규모 확장 가능한 Erlang 브로커. 수백만 연결에서 프로덕션 준비 완료.
X.509 클라이언트 인증서, 443에서 ALPN 협상 MQTT, SigV4 서명 WebSocket 및 AWS IoT 브로커 할당량. 전용 AWS IoT Core 페이지를 참조하세요.
장치 SAS 토큰, 트윈 / 직접 메서드 토픽, DPS 프로비저닝. 전용 Azure IoT Hub 페이지를 참조하세요.
포트 8883의 JWT 기반 장치 인증. 컴포넌트가 자동으로 JWT를 생성하고 회전해요.
포트 15675의 RabbitMQ Web-MQTT 플러그인 — 단일 TLS 포트를 통해 브라우저와 Delphi 클라이언트용 동일 브로커.
모두 통합 테스트 스위트를 통과해요. AMQP / STOMP / JMS와의 다중 프로토콜 공존이 무료.
모든 와이어 수준 MQTT 기능이 속성, 메서드 또는 이벤트로 노출돼요 — 숨겨진 것은 없어요.
Fire-and-forget (QoS 0), PUBACK이 있는 적어도 한 번 (QoS 1) 및 4-way 핸드셰이크 PUBREC → PUBREL → PUBCOMP (QoS 2)로 정확히 한 번. Publish() 호출마다 선택하세요.
발행을 retained로 표시하면 브로커가 미래의 모든 구독자에게 마지막으로 알려진 값을 전달해요 — “현재 상태” 토픽의 표준 패턴.
LastWillTestament는 클라이언트가 비정상적으로 끊어진 경우 브로커가 게시하는 토픽 + 페이로드를 등록해요 — 정통 장치 오프라인 신호.
CleanSession이 false일 때 구독과 전달되지 않은 QoS 1/2 메시지가 재연결 전반에 걸쳐 유지돼요 — 데이터 손실 없이 간헐적인 연결을 연결하세요.
OpenSSL 또는 SChannel을 사용하는 8883의 MQTTS. 디스크, Windows 인증서 저장소, PKCS#12 번들 또는 하드웨어 토큰에서 인증서를 로드하세요.
컴포넌트를 TsgcWebSocketClient에 연결하여 포트 443의 WSS를 통해 MQTT를 실행하세요 — HTTP 인식 로드 밸런서 또는 기업 프록시를 통과해요.
세션 만료, 최대 수신, 최대 패킷 크기, 토픽 별칭 최대값, 사용자 속성, 응답 정보 — 모든 CONNECT / PUBLISH / SUBSCRIBE / DISCONNECT에서.
$share/<group>/<topic>은 들어오는 메시지를 워커 풀에 라운드 로빈해요 — 무료 수평 확장.
지수 백오프로 자동 재연결; 재개 시 구독과 큐에 있는 QoS 1/2 발행이 재생돼요.
컴포넌트를 드롭하고, 두 이벤트를 연결하고, Active를 설정하세요.
uses
sgcWebSocket, sgcWebSocket_Protocol_MQTT_Client,
sgcWebSocket_Protocol_MQTT_Message;
var
WSClient: TsgcWebSocketClient;
MQTT: TsgcWSPClient_MQTT;
begin
WSClient := TsgcWebSocketClient.Create(nil);
WSClient.Host := 'broker.hivemq.com';
WSClient.Port := 1883;
WSClient.WatchDog.Enabled := True;
MQTT := TsgcWSPClient_MQTT.Create(nil);
MQTT.Client := WSClient;
MQTT.Version := mqtt50;
MQTT.LastWillTestament.Enabled := True;
MQTT.LastWillTestament.Topic := 'devices/sensor-01/status';
MQTT.LastWillTestament.Message := 'offline';
MQTT.LastWillTestament.QoS := mtqsAtLeastOnce;
MQTT.LastWillTestament.Retain := True;
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', mtqsAtLeastOnce);
// Retained “online” message
MQTT.Publish('devices/sensor-01/status',
'online', mtqsAtLeastOnce, True);
end;
procedure TForm1.MQTTPublish(Connection: TsgcWSConnection;
aTopic, aText: string;
PublishProperties: TsgcWSMQTTPublishProperties);
begin
Memo1.Lines.Add(aTopic + ' = ' + aText);
end;
네 가지 브로커 인증 패턴 모두 즉시 지원돼요: 간단한 사용자 이름/비밀번호(CONNECT 패킷 내부 전송), X.509 클라이언트 인증서(mTLS), JWT(Google Cloud IoT, 사용자 정의 브로커) 및 SAS 토큰(Azure IoT Hub). MQTT 5 향상된 인증은 SCRAM 스타일 챌린지/응답 흐름을 위해 OnMQTTAuth를 통해 AUTH 패킷을 노출해요.
전송의 경우 표준 1883(평문) 또는 8883(TLS) 포트에서 네이티브 MQTT-over-TCP를 실행하거나 WebSocket을 통해 MQTT를 터널링하여(Client 속성은 모든 TsgcWebSocketClient를 수락) 엄격한 HTTP 전용 방화벽과 CDN 에지를 통과할 수 있어요. 두 옵션 모두 동일한 컴포넌트와 동일한 이벤트를 사용해요.
TsgcWSPClient_MQTT에 대한 전체 참조 — 속성, 메서드, 이벤트, 모든 서브 프로토콜 기능.
AWS IoT Core, Azure IoT Hub, Google Cloud IoT 전용 페이지.
언제 WebSocket, SSE, AMQP 또는 HTTP/2 푸시보다 MQTT를 선택할지.
비동기 RPC를 위한 MQTT 5 ResponseTopic + CorrelationData 사용.
AWS IoT Core에 대한 서명된 WebSocket 인증.
AWS IoT 사용자 정의 권한 부여자를 통한 토큰 기반 인증.