Go语言神器Emqx+WebSocket

668 阅读2分钟

# MQTT使用

简单介绍一下吧

EMQX这个玩意了,他就是一个神器,为什么我说他是神器了?因为他直接就给你兼容了MQTT 和 webScoekt,而且还给你提供了非常漂亮的可视化界面,那他不是神器能是什么呢?

注意:如果你不懂MQTT的原理了,我建议你还是你先普及一下这块知识点,在来看这个文档,我这个文档的话是直接就上手开撸的.

开源版文档地址:

www.emqx.io/docs/zh/v5.…

安装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 {}

}

前端客户端代码连接

官方自带的pc桌面版本客户端

最后在给你上几张牛b的图片吧

emqx提供的可视化界面

image.png

emqx 提供的客户端连接工具(用于本地可以调试的)

image.png

emqx 提供的 js库,可以连接webSocket的

image.png