MQTT
MQTT服务端 EMQ X
官网下载地址:https://www.emqx.io/downloads
端口修改
1883 MQTT端口
8883 MQTT / SSL端口
8083 MQTT / WebSocket端口
8084 MQTT / WebSocket / SSL端口
8080 HTTP管理API端口
18083 Web仪表板端口
使用的TCP端口可以在etc/emqx/emqx.conf中配置:
## TCP Listener: 1883, 127.0.0.1:1883, ::1:1883
listener.tcp.external = 0.0.0.0:1883
## SSL Listener: 8883, 127.0.0.1:8883, ::1:8883
listener.ssl.external = 8883
## External MQTT/WebSocket Listener
listener.ws.external = 8083
## HTTP Management API Listener
listener.api.mgmt = 127.0.0.1:8080
Web仪表板端口18083可以在etc/emqx/plugins/emqx_dashboard.conf中配置:
## The IP address and port that the Dashboard HTTP listener will bind.
dashboard.listener.http = 18083
Web仪表板默认登录:admin,密码:public
websocket端口修改,在etc/emqx/emqx.conf中配置:
## Examples: 8083, 127.0.0.1:8083, ::1:8083
listener.ws.external = 8083
listener.wss.external = 8084
启动服务
service emqx start
开启订阅、发布权限认证
1.首先关闭匿名权限,在etc/emqx/emqx.conf中配置:
allow_anonymous = false
2.接下来去,etc/emqx/plugins目录下编辑文件emq_auth_username.conf,添加用户名和密码,保存并退出:
auth.user.1.username = t1
auth.user.1.password = t1password
3.开启用户密码认证插件
第一种方式:emqttd_ctl plugins load emq_auth_username
第二种方式:在 web 管理控制台中开启该插件
4.重启服务,使插件生效
ACL控制用户权限
配置好了用户,接下来可以通过ACL精确控制每个用户权限
比如编辑etc/emqx/acl.conf :
{allow, {user, "t1"}, subscribe, ["mqtt/demo"]}.
{allow, {user, "t2"}, publish, ["mqtt/demo"]}.
{deny, all}.
以上分别开启t1、t2用户的订阅、发布mqtt/demo主题权限。
重启服务,使ACL配置生效
MQTT服务端 Mosquitto
https://mosquitto.org/download/
windows 安装 mosquitto 过程
- 找到 mosquitto.conf 文件
默认路径通常是:
C:\Program Files\mosquitto\mosquitto.conf
如果文件不存在,可以创建一个新的。
- 修改配置文件
打开 mosquitto.conf,添加或修改以下内容:
# 监听所有 IPv4 地址(0.0.0.0)
listener 1883 0.0.0.0
# 允许匿名连接(仅测试用,生产环境应配置认证)
allow_anonymous true
禁用匿名访问(生产环境必须):
allow_anonymous false
password_file C:\Program Files\mosquitto\passwd
使用 mosquitto_passwd 创建用户密码文件:
"C:\Program Files\mosquitto\mosquitto_passwd.exe" -c passwd username
重启服务(如果启动失败:检查passwd文件权限,赋予SYSTEM用户读取权限)
net stop mosquitto
net start mosquitto
手动启动调试
cd "C:\Program Files\mosquitto"
mosquitto.exe -c mosquitto.conf -v
# windows的配置
listener 1883 0.0.0.0
allow_anonymous false
password_file D:\02_SOFT\mqtt\mosquitto\passwd
log_dest file D:\02_SOFT\mqtt\mosquitto\mosquitto.log
Liunx 安装 mosquitto
apt install mosquitto
增加用户test,设置密码
mosquitto_passwd -c /etc/mosquitto/passwd test
编辑配置文件 /etc/mosquitto/mosquitto.conf
修改监听端口
listener 1234
启动
mosquitto -c /etc/mosquitto/mosquitto.conf
MQTT 客户端
1.桌面客户端
mqttx
https://mqttx.app/zh/downloads
2.WEB客户端
paho-mqtt.js
官网:https://github.com/eclipse/paho.mqtt.javascript
MQTT.js
官网:https://github.com/mqttjs/MQTT.js
eg:
<html>
<head>
<title>test Ws mqtt.js</title>
</head>
<body>
<script src="mqtt.min.js"></script>
<script>
var client = mqtt.connect('ws://mqtt.malu.me/mqtt') // you add a ws:// url here
client.subscribe("mqtt/demo")
client.on("message", function (topic, payload) {
alert([topic, payload].join(": "))
})
client.publish("mqtt/demo", "hello world!")
</script>
</body>
</html>
3.Linux客户端
安装
apt install mosquitto-clients
订阅
mosquitto_sub -h localhost -t mqtt -u test -P 123456
发布
mosquitto_pub -h localhost -t mqtt -m "hello world" -u test -P 123456
-h参数指定要连接的MQTT服务器
-t参数指定向指定主题推送消息
-m参数指定消息内容
-r参数保留消息
eg.自动通知在线时间脚本
mosquitto_pub -h soldier.cloudmqtt.com -p 16885 -u test -P test -t 1 -r -m "`uptime`"
MQTT Free server
汇总 Public brokers
https://github.com/mqtt/mqtt.github.io/wiki/public_brokers
mosquitto
hivemq
cloudmqtt
https://customer.cloudmqtt.com/login
solace
https://console.solace.cloud/login/
cloudamqp
https://customer.cloudamqp.com/instance
emqx