当前位置:   article > 正文

golang使用mqtt协议_golang setdefaultpublishhandler

golang setdefaultpublishhandler
  1. 部署开源emqx Broker
 mongodb:
    container_name: mongodb
    image: mongo:5.0.10
    restart: always
    ports:
      - 27017:27017
    command: mongod --auth
    volumes:
      - /www/conf/mongodb/data:/data/db
      - /www/conf/mongodb/log:/var/log/mongodb
      - /www/conf/mongodb/config:/etc/mongo
    networks:
      - mynet
  emqx:
    container_name: emqx
    image: emqx/emqx:5.0.0
    restart: always
    ports:
      - 1883:1883
      - 8083:8083
      - 8883:8883
      - 8084:8084
      - 18083:18083
    environment:
      - EMQX_DASHBOARD__DEFAULT_USER__LOGIN=root
      - EMQX_DASHBOARD__DEFAULT_USER__PASSWORD=root@2022
      - EMQX_NODE__MAX_PORTS=65535
      - EMQX_MQTT__MAX_PACKET_SIZE=16MB
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    volumes:
      - /www/conf/emqx/data:/opt/emqx/data
    networks:
      - mynet
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

2.运行docker-compose up -d
3.访问127.0.0.1:18083 默认账号:admin 密码 :public
4.设置中英文
在这里插入图片描述
5.设置mongodb 认证

db.users.insertOne(
  {
      "username": "user123",
      "s": "salt",
      "is": true,
      "ph": "bede90386d450cea8b77b822f8887065e4e5abf132c2f9dccfcc7fbd4cba5e35"
  }
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
2. golang 客户端连接

package main

import (
	"fmt"
	mqtt "github.com/eclipse/paho.mqtt.golang"
	"time"
)

var messagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) {
	fmt.Printf("Received message: %s from topic: %s\n", msg.Payload(), msg.Topic())
}

var connectHandler mqtt.OnConnectHandler = func(client mqtt.Client) {
	fmt.Println("Connected")
}

var connectLostHandler mqtt.ConnectionLostHandler = func(client mqtt.Client, err error) {
	fmt.Printf("Connect lost: %v", err)
}


func main() {
	var broker = "127.0.0.1"
	var port = 1883
	opts := mqtt.NewClientOptions()
	opts.AddBroker(fmt.Sprintf("tcp://%s:%d", broker, port))
	opts.SetClientID("mqttx_4102ff83sss")
	opts.SetUsername("user123")
	opts.SetPassword("secret")
	opts.SetDefaultPublishHandler(messagePubHandler)
	opts.OnConnect = connectHandler
	opts.OnConnectionLost = connectLostHandler
	client := mqtt.NewClient(opts)
	if token := client.Connect(); token.Wait() && token.Error() != nil {
	//	panic(token.Error())
		fmt.Println("ddd")
	}

	sub(client)
	publish(client)

	client.Disconnect(250)
}

// 发布消息
func publish(client mqtt.Client) {
	num := 10
	for i := 0; i < num; i++ {
		text := fmt.Sprintf("Message %d", i)
		token := client.Publish("topic/test", 0, false, text)
		token.Wait()
		time.Sleep(time.Second)
	}
}

// 订阅
func sub(client mqtt.Client) {
	topic := "topic/test"
	token := client.Subscribe(topic, 1, nil)
	token.Wait()
	fmt.Printf("Subscribed to topic: %s", topic)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42898
推荐阅读
相关标签
  

闽ICP备14008679号