최근 IoT 기술이 발전함에 따라 MQTT 프로토콜은 IoT 통신 분야에서 점차 중요한 위치를 차지해 왔습니다. MQTT(Message Queuing Telemetry Transport)는 게시/구독(pub/sub) 모델을 기반으로 하는 경량 통신 프로토콜입니다. MQTT 프로토콜은 간단하고 효율적이며 안정적이고 유연하며 휴대폰, 임베디드 시스템, PC 등 다양한 장치, 특히 사물 인터넷 분야에 적용할 수 있습니다. 이 기사에서는 Go 언어를 사용하여 MQTT 프로토콜을 구현하는 방법을 소개합니다.
MQTT 프로토콜은 낮은 대역폭, 높은 대기 시간 및 불안정한 네트워크 환경에서의 통신 요구를 위해 설계된 프로토콜입니다. MQTT는 게시/구독 모델이라는 아이디어를 도입합니다. 즉, 메시지 게시자(Publisher)와 메시지 구독자(Subscriber) 간의 메시지 전달이 직접 연결되지 않고 중간 프록시 서버(Broker)를 통해 구현됩니다. ).
MQTT 프로토콜의 메시지 형식은 다음과 같습니다.
+————+————+————+————+————+————+———— +————+————+—— —+————+————+————+————+
|고정 헤더|가변 헤더|메시지 본문|
+—— ——+————+————+————+ ————+————+————+————+————+————+—— ——+————+————+————+
고정 헤더: 메시지 유형, QoS 및 기타 정보를 포함합니다.
변수 헤더: 클라이언트 ID, 주제 이름 등과 같은 보조 프로토콜의 일부 고정 정보가 포함되어 있습니다.
메시지 본문: 게시되거나 구독된 특정 콘텐츠입니다.
Go 언어는 뛰어난 동시성과 효율적인 성능으로 알려진 신흥 프로그래밍 언어로, 최근 사물 인터넷 분야에서 인기 있는 언어 중 하나가 되었습니다. Go 언어는 TCP, UDP, HTTP 등과 같은 뛰어난 네트워크 프로그래밍 라이브러리를 제공합니다. Go 언어와 이러한 라이브러리의 뛰어난 기능을 사용하여 MQTT 프로토콜을 쉽게 구현할 수 있습니다.
2.1 mqtt 라이브러리 설치
Go 언어는 Paho MQTT, Eclipse Paho 등과 같은 여러 mqtt 라이브러리를 제공합니다. 이 기사에서는 다음 명령을 통해 설치되는 Eclipse Paho 라이브러리를 사용합니다.
go get github.com/eclipse/paho.mqtt.golang
2.2 MQTT 서버에 연결
Eclipse Paho 라이브러리를 사용하기 전에 MQTT 프록시 서버에 연결해야 합니다. 연결 시 MQTT 프록시 서버 주소, 클라이언트 ID, 사용자 이름, 비밀번호 및 기타 정보를 제공해야 합니다.
MQTT 라이브러리는 ClientOptions 유형을 제공하며 연결 옵션은 이 유형의 SetXXX 메서드를 통해 설정됩니다. 예:
opts := mqtt.NewClientOptions().AddBroker("tcp://localhost:1883").SetClientID("go-mqtt") opts.SetUsername("user") opts.SetPassword("password") client := mqtt.NewClient(opts)
위 코드에서 AddBroker 메서드는 MQTT 프록시 서버 주소를 설정하고 SetClientID 메서드는 클라이언트 ID, SetUsername 및 SetPassword 메서드는 연결 인증 정보를 설정합니다.
2.3 메시지 게시
MQTT 프로토콜에서 메시지 게시 끝은 메시지를 게시하는 클라이언트입니다. 메시지를 게시할 때 메시지의 제목과 내용을 제공해야 합니다. Eclipse Paho 라이브러리는 메시지 전송을 위한 Publish 메소드를 제공합니다. 아래와 같이
token := client.Publish("topic", 0, false, "hello world") token.Wait()
위 코드에서 client.Publish 메소드의 첫 번째 매개변수는 주제 이름, 두 번째 매개변수는 QoS 수준, 세 번째 매개변수는 Retain 플래그입니다(true는 서버가 마지막 해당 주제 메시지를 삭제하고 해당 주제가 새로 구독될 때 보냅니다. 네 번째 매개변수는 메시지 본문입니다.
2.4 메시지 구독
MQTT 프로토콜에서 메시지의 구독자 측에서는 구독할 주제와 메시지 도착 시 처리할 콜백 함수를 제공해야 합니다. Eclipse Paho 라이브러리는 메시지 구독을 위한 Subscribe 메소드를 제공합니다.
token := client.Subscribe("topic", 0, func(client mqtt.Client, msg mqtt.Message) { fmt.Printf("Received message: %s from topic: %s ", msg.Payload(), msg.Topic()) }) token.Wait()
위 코드에서 client.Subscribe 메소드의 첫 번째 매개변수는 주제 이름, 두 번째 매개변수는 QoS 수준, 세 번째 매개변수는 콜백 함수로 메시지가 전송될 때 실행됩니다. 도착합니다.
위의 샘플 코드를 통해 Go 언어와 Eclipse Paho 라이브러리를 사용하여 MQTT 프로토콜을 구현하는 것이 매우 간단하다는 것을 알 수 있습니다. Go 언어는 우수한 동시성 성능과 네트워크 프로그래밍 라이브러리를 갖추고 있으며 다양한 네트워크 통신 프로토콜을 쉽게 구현할 수 있습니다. MQTT 프로토콜은 경량 통신 프로토콜로서 사물 인터넷 분야에서 널리 사용됩니다. MQTT 프로토콜을 Go 언어를 통해 구현하면 사물 인터넷 애플리케이션에 보다 효율적이고 안전하며 안정적인 통신 방법을 제공할 수 있다고 믿습니다. 사물 인터넷 개발 앞으로 MQTT 프로토콜과 Go 언어는 사물 인터넷 분야에서 점점 더 널리 사용될 것입니다.
위 내용은 golang은 mqtt를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!