# MQTT使用
简单介绍一下吧
EMQX这个玩意了,他就是一个神器,为什么我说他是神器了?因为他直接就给你兼容了MQTT 和 webScoekt,而且还给你提供了非常漂亮的可视化界面,那他不是神器能是什么呢?
注意:如果你不懂MQTT的原理了,我建议你还是你先普及一下这块知识点,在来看这个文档,我这个文档的话是直接就上手开撸的.
开源版文档地址:
安装MQTT服务器
-
使用docker容器部署
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.3.1
-
通过浏览器访问 http://localhost:18083/(localhost 可替换为您的实际 IP 地址)以访问 EMQX Dashboard 管理控制台,进行设备连接与相关指标监控管理。
-
默认账号密码
账号: admin
密码: public
开发指南
文档地址: www.emqx.io/docs/zh/v5.…
我们选择go的sdk
操作步骤
-
安装依赖
go get github.com/eclipse/paho.mqtt.golang
-
MQTT Go 使用示例(
注意其他开发语言使用示例请看上面的文档.
)本示例包含 Go 语言的 Paho MQTT 连接 EMQX,并进行消息收发完整代码:
package main
import (
"fmt"
mqtt "github.com/eclipse/paho.mqtt.golang"
"time"
)
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())
}
var connectHandler mqtt.OnConnectHandler = func(client mqtt.Client) {
fmt.Println("Connected")
}
func main() {
//mqtt.DEBUG = log.New(os.Stdout, "", 0)
//mqtt.ERROR = log.New(os.Stdout, "", 0)
var host = "tcp://127.0.0.1:1883"
opts := mqtt.NewClientOptions()
opts.AddBroker(host)
opts.SetClientID("1314520")
opts.SetKeepAlive(60 * time.Second)
opts.SetPingTimeout(1 * time.Second)
// 设置消息回调处理函数
opts.SetDefaultPublishHandler(f)
opts.OnConnect = connectHandler
c := mqtt.NewClient(opts)
if token := c.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
}
// 订阅主题
//if token := c.Subscribe("meimei", 0, nil); token.Wait() && token.Error() != nil {
// fmt.Println(token.Error())
// os.Exit(1)
//}
// 发布消息
token := c.Publish("meimei", 0, false, "Hello World")
token.Wait()
time.Sleep(3 * time.Second)
// 取消订阅
//if token := c.Unsubscribe("testtopic/#"); token.Wait() && token.Error() != nil {
// fmt.Println(token.Error())
// os.Exit(1)
//}
// 断开连接
//c.Disconnect(250)
//select {}
}
前端客户端代码连接
-
大家直接看官网链接地址吧
-
完整的客户端连接代码地址