>  기사  >  백엔드 개발  >  golang은 mqtt를 구현합니다.

golang은 mqtt를 구현합니다.

WBOY
WBOY원래의
2023-05-19 09:06:372142검색

최근 IoT 기술이 발전함에 따라 MQTT 프로토콜은 IoT 통신 분야에서 점차 중요한 위치를 차지해 왔습니다. MQTT(Message Queuing Telemetry Transport)는 게시/구독(pub/sub) 모델을 기반으로 하는 경량 통신 프로토콜입니다. MQTT 프로토콜은 간단하고 효율적이며 안정적이고 유연하며 휴대폰, 임베디드 시스템, PC 등 다양한 장치, 특히 사물 인터넷 분야에 적용할 수 있습니다. 이 기사에서는 Go 언어를 사용하여 MQTT 프로토콜을 구현하는 방법을 소개합니다.

  1. MQTT 프로토콜 소개

MQTT 프로토콜은 낮은 대역폭, 높은 대기 시간 및 불안정한 네트워크 환경에서의 통신 요구를 위해 설계된 프로토콜입니다. MQTT는 게시/구독 모델이라는 아이디어를 도입합니다. 즉, 메시지 게시자(Publisher)와 메시지 구독자(Subscriber) 간의 메시지 전달이 직접 연결되지 않고 중간 프록시 서버(Broker)를 통해 구현됩니다. ).

MQTT 프로토콜의 메시지 형식은 다음과 같습니다.

+————+————+————+————+————+————+———— +————+————+—— —+————+————+————+————+
|고정 헤더|가변 헤더|메시지 본문|
+—— ——+————+————+————+ ————+————+————+————+————+————+—— ——+————+————+————+

고정 헤더: 메시지 유형, QoS 및 기타 정보를 포함합니다.
변수 헤더: 클라이언트 ID, 주제 이름 등과 같은 보조 프로토콜의 일부 고정 정보가 포함되어 있습니다.
메시지 본문: 게시되거나 구독된 특정 콘텐츠입니다.

  1. Go 언어는 MQTT를 구현합니다

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 수준, 세 번째 매개변수는 콜백 함수로 메시지가 전송될 때 실행됩니다. 도착합니다.

  1. Summary

위의 샘플 코드를 통해 Go 언어와 Eclipse Paho 라이브러리를 사용하여 MQTT 프로토콜을 구현하는 것이 매우 간단하다는 것을 알 수 있습니다. Go 언어는 우수한 동시성 성능과 네트워크 프로그래밍 라이브러리를 갖추고 있으며 다양한 네트워크 통신 프로토콜을 쉽게 구현할 수 있습니다. MQTT 프로토콜은 경량 통신 프로토콜로서 사물 인터넷 분야에서 널리 사용됩니다. MQTT 프로토콜을 Go 언어를 통해 구현하면 사물 인터넷 애플리케이션에 보다 효율적이고 안전하며 안정적인 통신 방법을 제공할 수 있다고 믿습니다. 사물 인터넷 개발 앞으로 MQTT 프로토콜과 Go 언어는 사물 인터넷 분야에서 점점 더 널리 사용될 것입니다.

위 내용은 golang은 mqtt를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:golang 전송 nodejs다음 기사:golang 전송 nodejs