MQTT的工作机制与http不同,服务器只是起着一个中转站的功能。每个客户端,都可以把消息通过服务器广播给所有其他客户端。Mqtt内称为订阅与发布:

         订阅:客户端向服务器登记要订阅某主题,后续有以该主题发布的消息时,就会发给该客户端

         发布:客户端向服务器发送一条消息,并说明要发布的主题,服务器就会将该消息广播给所有订阅了该主题的客户端

         mosquitto是一款开源的mqtt服务器(mqtt协议内称为broker),由eclipse推出,简单易用。本文就是介绍他的安装步骤

1.安装

         Ubuntu下不需要去官网下载源码进行编译,直接用apt命令安装即可

sudo apt install mosquitto
sudo apt install mosquitto-clients

        第一条命令是安装mosquito本体,第二条是安装一个mqtt客户端软件

2.运行

         下载后即可使用开始运行, 默认不需账号密码即可连接,默认使用1883端口。后面会介绍怎么修改配置。

        sudo service mosquitto start                  #启动服务

        sudo service mosquitto stop                   #停止服务

        sudo service mosquitto restart               #重启服务

3. 使用命令进行测试

         我们先开启两个命令行窗口,一个发,一个收。

使用sub命令订阅主题,并进入接收状态,

mosquitto_sub  –v  -t "主题"

可选:-h 指定服务器ip地址

         -u 指定登陆用的用户名

         -P 指定登陆密码

使用pub命令发布内容,所有订阅该主题的客户端都会收到

mosquitto_pub -t "主题" -m  "内容"

可选:-h 指定服务器ip地址

         -u 指定登陆用的用户名

         -P 指定登陆密码

测试情况如下图:

Mosquito配置

1 创建配置文件

 配置是通过编写配置文件进行的。系统默认使用的配置文件是/etc/mosquitto/mosquitto.conf

mosquitto.conf文件内申明了,所有存放在目录下的后缀名为.conf的文件,都会成为配置文件。既然官方都推荐将配置文件都放到那。

        那我们新建一个my.conf文件存放到/etc/mosquitto/conf.d/路径下

sudo vim /etc/mosquitto/conf.d/my.conf

2 配置

         完整的配置文件示例,存放在/usr/share/doc/mosquitto/examples/路径下,,可配置的项目很多,这里我们只配置启用几个常用的。

        将于以下内容存放到上一步创建的my.conf文件中

#修改端口
port  1800

# 不允许匿名访问,需要使用账号密码才能连接服务器
allow_anonymous false

# 指定要使用的账号密码文件,需手动创建该文件
password_file /etc/mosquitto/pwfile

# 指定权限控制文件存放路径,需手动创建该文件
acl_file /etc/mosquitto/aclfile

3 添加用户

         用touch命令创建文件,用于存储用户密码,这个路径是上一步指定的,你可以修改成别的

sudo touch /etc/mosquitto/pwfile

        密码是加密存储的,需要使用mosquitto_passwd命令来创建账号。

        以下命令的功能是创建user_pc这个用户,并将密码存储到指定的pwfile文件内,输入以下命令后会要求你输入密码。

 sudo mosquitto_passwd /etc/mosquitto/pwfile user_pc

4 设置用户权限

         先创建存放用户权限的文件,这个路径是写在my.conf内的,你可以修改成别的

sudo vim /etc/mosquitto/aclfile

        权限文件示例如下,a/#代表以a/开头的所有主题,如a/test,a/b/c/d


#用户 user_pc
#只能发布 test/#
#只能订阅 a/#
#可以订阅与发布 b/#
user user_pc
topic write test/#
topic read  a/#
topic b/#

#用户a只能发布 a/#
user a
topic write  a/#


#所有用户都可以发布hhh/#
pattern write hhh/#

5 重启服务

sudo service mosquitto restart

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐