我是靠谱客的博主 高挑白猫,最近开发中收集的这篇文章主要介绍以mosquitto为服务, 用golang实现简单的mqtt发布和订阅,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近的一个项目是在对接hk威视的一个平台, 他们的数据是通过MQTT协议进行发布的. 而我之前从来没有接触过MQTT协议,  所以就基于mosquitto搭建了一个MQTT服务, 又写了一个测试文件, 以熟悉后续可能的相关操作.

windows下的mosquitto的安装配置可以查看此教程, 还是比较详细的, 地址如下:

https://www.cnblogs.com/zkwarrior/p/10972464.html

此测试代码用的是github上的开源库, 地址如下:

https://github.com/eclipse/paho.mqtt.golang

 

<一> mosquitto的配置:

在实际使用中, 为了安全, MQTT服务会配置user-passwd或者SSL/TLS. 在这里使用用户名和密码. 

1, 首先用mosquitto_passwd.exe生成用户名和密码, 在安装的目录执行如下命令后会让你手动输入密码:

.mosquitto_passwd.exe .pwfile sub

生成的<用户名-密码>文件如下:

其中pub和sub是我在执行上述命令时指定的用户名, 后面的则为加密后的密码.

2, 配置mosquitto.conf

为了使用户名和密码生效, 需要在mosquitto.conf里配置password_file这一字段, 我自己配置的为:

password_file C:DevelopAppMosquittopwfile

其他项都是使用默认的, 然后启动mosquitto:

.mosquitto.exe -c .mosquitto.conf

 

<二> golang编码:

package main

import (
	"fmt"
	"time"

	MQTT "github.com/eclipse/paho.mqtt.golang"
)

// 订阅回调
func subCallBackFunc(client MQTT.Client, msg MQTT.Message) {
	fmt.Printf("Subscribe: Topic is [%s]; msg is [%s]n", msg.Topic(), string(msg.Payload()))
}

// 连接MQTT服务
func connMQTT(broker, user, passwd string) (bool, MQTT.Client) {
	opts := MQTT.NewClientOptions()
	opts.AddBroker(broker)
	opts.SetUsername(user)
	opts.SetPassword(passwd)

	mc := MQTT.NewClient(opts)
	if token := mc.Connect(); token.Wait() && token.Error() != nil {
		return false, mc
	}

	return true, mc
}

// 订阅消息
func subscribe() {
	// sub的用户名和密码
	b, mc := connMQTT("tcp://127.0.0.1:1883", "sub", "aaabbb")
	if !b {
		fmt.Println("sub connMQTT failed")
		return
	}
	mc.Subscribe("topic_tp", 0x00, subCallBackFunc)
}

// 发布消息
func publish() {
	// pub的用户名和密码
	b, mc := connMQTT("tcp://127.0.0.1:1883", "pub", "aaabbb")
	if !b {
		fmt.Println("pub connMQTT failed")
		return
	}

	for {
		mc.Publish("topic_tp", 0x00, true, "Hello, this is publisher")
		time.Sleep(time.Second)
	}
}

func main() {
	subscribe()
	publish()
}

 

<三> 执行测试:

测试结果如下:

结束:

如果有什么问题, 欢迎指正, 谢谢.

最后

以上就是高挑白猫为你收集整理的以mosquitto为服务, 用golang实现简单的mqtt发布和订阅的全部内容,希望文章能够帮你解决以mosquitto为服务, 用golang实现简单的mqtt发布和订阅所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部