littlebot
Published on 2025-04-13 / 0 Visits
0

【源码】基于Go语言的MQTT客户端项目

项目简介

本项目是基于Go语言开发的MQTT客户端,借助Go语言实现与MQTT协议的客户端连接。MQTT作为轻量级的发布/订阅消息协议,常用于机器对机器通讯,适用于物联网等场景。项目能帮助开发者以简单高效的方式连接MQTT服务器,实现消息的发布与订阅。

项目的主要特性和功能

  1. 简单易用:提供简洁API接口,便于开发者快速集成和使用。
  2. 高效稳定:利用Go语言的高并发特性,保障大量连接和消息传输时的稳定性与效率。
  3. 功能丰富:支持MQTT多种功能,如连接、断开、订阅、发布消息,以及设置QoS等级等。
  4. 安全性高:支持TLS/SSL加密连接,确保数据传输安全。
  5. 配置灵活:可自定义配置,如设置客户端ID、用户名、密码、主题等。

安装使用步骤

1. 安装依赖环境

确保已安装Go语言环境。

2. 部署RabbitMQ服务

使用以下命令一键拉起RabbitMQ: bash docker run -d --name rabbitmq --restart always -p 15672:15672 -p 5672:5672 -p 1883:1883 rabbitmq:3-management - 端口说明: - AMQP端口(默认5672):用于AMQP协议。 - 管理界面端口(默认15672):用于访问RabbitMQ的Web管理界面。 - MQTT端口(默认1883):用于MQTT服务。 - 端口检查bash telnet 127.0.0.1 5672 telnet 127.0.0.1 1883 - 访问管理界面:访问http://127.0.0.1:15672/#/,默认账号密码为guest/guest

3. 配置MQTT服务

  • 启用MQTT插件bash docker exec -it rabbitmq /bin/bash rabbitmq-plugins enable rabbitmq_mqtt exit docker restart rabbitmq
  • 配置账号密码bash rabbitmq-plugins enable rabbitmq_management rabbitmqctl add_user admin your_password rabbitmqctl set_user_tags admin administrator rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" 请将your_password替换为实际密码。

4. 运行Go代码

将以下代码保存为main.go,并修改your-addressyour-portyour-usernameyour-password为实际信息: ```go package main

import ( "fmt" "os" "os/signal" "syscall"

)

func onMessageReceived(client MQTT.Client, message MQTT.Message) { fmt.Printf("Received message on topic: %s\n", message.Topic()) fmt.Printf("Message: %s\n", message.Payload()) }

func main() { // 创建 MQTT 连接参数 opts := MQTT.NewClientOptions().AddBroker("tcp://your-address:your-port") opts.SetClientID("go_client") opts.SetUsername("your-username") // 设置用户名 opts.SetPassword("your-password") // 设置密码

// 创建 MQTT 客户端实例
client := MQTT.NewClient(opts)

// 连接到 MQTT 代理
if token := client.Connect(); token.Wait() && token.Error() != nil {
    panic(token.Error())
}

// 订阅主题
if token := client.Subscribe("test/topic", 0, onMessageReceived); token.Wait() && token.Error() != nil {
    panic(token.Error())
}

fmt.Println("Connected to MQTT broker")

// 等待信号
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
<-sig

// 断开连接
client.Disconnect(250)
fmt.Println("Disconnected from MQTT broker")

} 然后在终端执行以下命令运行代码:bash go run main.go ```

5. 验证连接

进入RabbitMQ的dashboard的Connections标签页,可看到client_idgo_client的连接。也可使用MQTTX工具进行连接测试,注意rabbitmqdashboard账号密码MQTT账号密码不同。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】