物联网云智能开发—MosQuitto服务器的安装 测试 订阅&发布及加密教程

2020-09-23 11:16:11 浏览数 (1)

Eclipse Mosquitto是一个开放源码(EPL/EDL许可)消息代理,它实现了MQTT协议版本5.0、3.1.1和3.1。mosquitto服务器是轻量级的,适用于所有设备,从低功率单板计算机到全服务器。

Hello,你好哇,我是灰小猿!一个努力赚钱买生发水的程序猿。

在物联网云智能开发中,MQTT协议是最为常用的协议之一,之前在一篇文章中和大家简要的介绍了MQTT协议的基本概念,感兴趣的小伙伴可以移步这篇文章“浅谈物联网开发最热协议-MQTT协议”。

我们知道MQTT协议是基于服务器的订阅/发布式通信协议,所以该协议的实现一定是基于服务器而成立的。所以这一篇大灰狼就来和大家分享一下在Windows环境下搭建/测试MosQuitto服务器的教程。

MosQuitto服务器简介

关于MosQuitto服务器的官方介绍是这样的:

官方介绍

Eclipse Mosquitto是一个开放源码(EPL/EDL许可)消息代理,它实现了MQTT协议版本5.0、3.1.1和3.1。mosquitto是轻量级的,适用于所有设备,从低功率单板计算机到全服务器。MQTT协议提供了使用发布/订阅模型执行消息传递的轻量级方法。这使得它适用于物联网消息传递,如低功耗传感器或手机、嵌入式计算机或微控制器等移动设备。mosquitto项目还提供了一个用于实现MQTT客户机的C库,以及非常流行的mosquitto_pub和mosquitto_sub命令行MQTT客户机。

从这个官方说明中我们基本也就可以了解到MosQuitto服务器基本作用。

安装MosQuitto服务器

接下来就是关于该服务器的下载和安装过程。

官方下载地址

之后在页面中找到Windows环境下的EXE版本下载,

之后找到我们下载好的文件点击进行安装,然后我们就可以在对应的安装文件夹下看到这样的诸多文件:

关于这几个主要文件的作用介绍如下:

模块

功能

mosquitto.conf

mosquitto服务器的配置文件

mosquitto

用来开启broker

mosquitto_passwd

用来设置用户的账号与密码

mosquitto_pub

用来发布消息

mosquitto_sub

用来订阅消息

pwfile.example

通过mosquitto_passwd来存储用户的账号密码的文件

测试MosQuitto服务器

在下载安装完成MosQuitto服务器之后,当然要对其进行测试,看其是否安装成功,

测试方法为打开cmd命令行,找到我们安装MosQuitto服务器的文件路径下,之后输入如下的命令行:

代码语言:javascript复制
mosquitto -c mosquitto.conf

若没有任何输出,则表示MosQuitto服务器启动成功!

效果如下:

消息的订阅&发布

在确定我们的MosQuitto服务器安装并启动没有问题之后,我们就可以尝试使用该服务器进行MQTT协议中消息的订阅和发布试验了,在MQTT协议中订阅和发布都是在客户端进行的,所以我们这里称为订阅者和发布者,

消息订阅

订阅者订阅的方法为:重新打开cmd命令行,同样找到MosQuitto服务器所在的文件夹下,按照如下的命令行格式进行输入:

代码语言:javascript复制
mosquitto_sub -v -t {topic}

其中的“topic”为消息主题,可以根据实际应用自行命名,在关于MQTT协议概念中有对其相关的介绍,

如下所示:

消息发布

发布者发布消息的方法为:再次打开一个cmd命令行,同样找到MosQuitto服务器所在的文件夹下,按照如下的命令行格式进行输入:

代码语言:javascript复制
mosquitto_pub -t {topic} -m {Hello}

其中的“topic”为发布的消息的主题,和上面订阅者订阅的主题是同一个概念,第二个大括号中的内容为将要发布的消息,在这里要注意的是,在使用cmd命令行发布消息时,消息中间不应该有空格,否则会发送失败!

如下所示:

之后如上图所示,我们在订阅者界面就可以接收到相应的主题发送来的消息。

多订阅者消息接收

我们知道MQTT协议中的消息订阅者可以存在多个,所以我们可以在新的cmd命令行中继续订阅该发布者的topic主题消息,之后我们再通过发布者发布,在另一个订阅者中就可以接收到发布者之后发送的消息了!

如下所示:

设置用户名&密码

关于设置服务器用户名和密码的官方介绍如下,

mosquitto.conf man page

其中mosquitto_passwd是一个为mosquitto MQTT代理管理密码文件的工具。并且用户名不能包含":"。密码以与crypt(3)相似的格式存储。

我们可以使用cmd命令行在MosQuitto服务器所在的文件夹下,按照如下的命令行格式进行输入:

代码语言:javascript复制
mosquitto_passwd [ -c | -D ] passwordfile username 

关于其中具体的使用可以查看官方文档。

例如下所示:

由于密码是加密的,所以我们无法看到。之后我们可以在相应的文件下找到我们保存用户名和密码的该文件,打开之后就可以看到如下所示的我们设置的用户名和被加密后的密码。

之后修改mosquitto.conf中的 password_file pwfile.example, 将其修改成我们刚刚创建的passwordfile使即可生效。

好了,关于MosQuitto服务器的搭建和使用暂且和大家分享到这里,折后也会继续分享关于其更加详细深入的学习。

觉得不错记得点赞关注哟!

大灰狼陪你一起进步!

0 人点赞