搭建mqtt服务器
1.下载安装
环境:ubuntu18
中间件:mosquitto(轻量级,支持mqtt3.1、mqtt3.1.1)
添加到存储库列表
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-pp
更新软件包
sudo apt-get update
-
安装
sudo apt-get install mosquitto
安装命令行客户端
sudo apt-get install mosquitto-clients
-
配置
主配置文件mosquitto.conf(
cd /etc/mosquitto/conf.d
)sudo service mosquitto stop #停止服务
-
新建myconfig.conf配置文件
vim myconfig.conf
-
输入以下内容,使用wq保存退出。
#-------------------------------------------
# 禁止匿名访问
allow_anonymous true
# 认证配置
password_file /etc/mosquitto/pwfile
# 权限配置
#acl_file /etc/mosquitto/aclfile #如果写这个就必须要在文件中写入相应的权限信息,不然会默认不允许任何
port 1883
#添加websockets协议
listener 9001
protocol websockets
allow_anonymous true
-
创建一个mqtt服务器账户
假设用户名为:shaw 在命令行运行:mosquitto_passwd -c /etc/mosquitto/pwfile.txt shaw 回车后连续输入2次用户密码即可
-
重新启动mosquitto
sudo service mosquitto start #启动服务
-
下载测试工具
https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.0.2/
-
使用命令行
mosquitto_pub -u username -P pwd -t topic -m message #发布
mosquitto_sub -u username -P pwd -t topic #订阅
-
python客服端
import paho.mqtt.client import time mqtt = paho.mqtt.client def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) #打印连接状态 client.subscribe("2222") #订阅2222 def on_message(client, userdata, msg): print(msg.topic+" " + ":" + str(msg.payload)) #打印接受的消息 client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) client = mqtt.Client(client_id) # ClientId不能重复,所以使用当前时间 client.username_pw_set("shaw", "123456") # 必须设置,否则会返回「Connected with result code 4」 client.on_connect = on_connect client.on_message = on_message client.connect("your ip addr", 1883, 60) client.loop_forever()