写了这么多的嵌入式文章,这篇我给大家分享下 EMQ 服务器商用时候的心得;毕竟物联网通讯,第一时间就是想到服务器搭建,而第一想到的是开源的、免费的MQTT服务器搭建,2017年我出了一篇EMQ2.3版本的教程,时过境迁,本篇介绍 EMQ3.0 版本的搭建和使用!废话不多说,客官请看!
https://www.emqx.io/downloads#broker
https://packages.emqx.io/emqx-ce/v3.2.3/emqx-centos7-v3.2.3.zip
wget https://packages.emqx.io/emqx-ce/v3.2.3/emqx-centos7-v3.2.3.zip
yum install unzip -y
unzip emqx-centos7-v3.2.3.zip
./emqx/bin/emqx start
软件安装之后,我们的服务器还要开放以下端口:
端口号 | 用途 |
---|---|
18083 | mqtt服务器面板 |
1883 | tcp mqtt连接 |
8083 | websocket连接 |
8084 | websocket ssl连接 |
8080 | rest api http使用 |
EMQ软件不配置任何设置,都是可以匿名登录的,也即是可有可无用户名和密码鉴权登录连接,这点是非常危险的!下面教大家如何新建用户名和密码鉴权!
首先,关闭匿名登录,编辑配置文件 emqx.conf
,修改为 allow_anonymous
改为 false
,即修改后是 allow_anonymous = false
;
vim emqx/etc/emqx.conf
操作演示:
这时候,我们再连接,怎么连接都是失败的;
此插件emqx_auth_username.conf
是中间件,做客户端的认证处理!
./emqx/bin/emqx_ctl plugins load emqx_auth_username
启动之后,下面就可以添加用户了,比如我要添加 这样的客户端连接用户名字和密码数据:
username | password |
---|---|
emq_u | emq_x |
则,这样敲进去:
./emqx/bin/emqx_ctl users add emq_u emq_x
我们再看看是否添加:
./emqx/bin/emqx_ctl users list
:
这个特色,我觉得是最好用的,我对比过 阿里云、百度云和腾讯云提供的MQTT服务器,都是通过MNS消息队列这类的付费插件操作设备的上报消息,本来买他的MQTT付费了,再买一个消息队列这样的收费产品,真是“坑爹”!
emqx_web_hook 插件可以将所有 EMQ X 的事件及消息都发送到指定的 HTTP 服务器。
如下所示,打开插件,配置你的服务器uri接收地址!之后记得启动!
更多格式请访问获取:https://github.com/emqx/emqx-web-hook
{
"action":"client_connected",
"client_id":"C_1492410235117",
"username":"C_1492410235117",
"keepalive": 60,
"ipaddress": "127.0.0.1",
"proto_ver": 4,
"connected_at": 1556176748,
"conn_ack":0
}
{
"action":"client_disconnected",
"client_id":"C_1492410235117",
"username":"C_1492410235117",
"reason":"normal"
}
{
"action":"client_subscribe",
"client_id":"C_1492410235117",
"username":"C_1492410235117",
"topic":"world",
"opts":{
"qos":0
}
}
这个也是蛮好的设计,平时我们想发送一则消息给设备,但是不想又不想连接MQTT直接发送,这个可以省去连接的步骤!
用户可以通过 REST API 查询 MQTT 客户端连接(Connections)、会话(Sessions)、订阅(Subscriptions)和路由(Routes)信息,还可以检索和监控服务器的性能指标和统计数据。
首先,先在面板创建一个授权用户,如下操作:
之后,查看该用户的详细信息!得到 AppId 和 App 密钥!
这里,我使用postman测试,如下配置:
http://localhost:8080/api/v3/mqtt/publish
{
"topic":"Hello",
"qos":1,
"retain":false,
"client_id":"xuhongPhpClient",
"username":"xuhongPhpClient",
"payload":"hellp"
}
esp8266
带你飞、加群付费QQ
群,不喜的朋友勿喷勿加:434878850