为了方便客户端测试,搭建好 EMQX 服务之后,需要用 golang 写一个发布消息的测试程序。 用于向指定主题推送消息,这样客户端可以提前测试 MQTT 相关的功能。
安装 Eclipse Paho MQTT Go Client
> go get github.com/eclipse/paho.mqtt.golang
go: downloading github.com/eclipse/paho.mqtt.golang v1.4.1
go: downloading github.com/gorilla/websocket v1.4.2
go: added github.com/eclipse/paho.mqtt.golang v1.4.1
使用账号密码
由于官方 Demo 里没有账号密码的示例,所以整理了一下:
// MQTT API 测试
package main
import (
"fmt"
"os"
"time"
mqtt "github.com/eclipse/paho.mqtt.golang"
)
const (
address = "tcp://x.x.x.x:1883"
userName = "x"
password = "x"
topic = "test_topic"
clientID = "test"
)
var f mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) {
fmt.Printf("TOPIC: %s\n", msg.Topic())
fmt.Printf("MSG: %s\n", msg.Payload())
}
func main() {
opts := mqtt.NewClientOptions().
AddBroker(address).
SetClientID(clientID).
SetUsername(userName).
SetPassword(password)
opts.SetKeepAlive(60 * time.Second)
// 设置消息回调处理函数
opts.SetDefaultPublishHandler(f)
opts.SetPingTimeout(1 * time.Second)
c := mqtt.NewClient(opts)
if token := c.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
}
// 断开连接
defer c.Disconnect(250)
// 发布消息
for {
token := c.Publish(topic, 0, false, "小镇编码家")
token.Wait()
time.Sleep(1 * time.Second)
}
}
TODO
- [X] 返回 JSON 测试数据
- [X] 线上部署
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式