2023-07-06-Windows下搭建MQTT服务器以及Android测试连接
MQTT服务器
MQTT开源服务器很多,比如:
- Mosquitto:Eclipse Mosquitto使用 C 语言实现的 MQTT 服务器
- EMQX:使用 Erlang 语言开发的 MQTT 服务器,内置强大的规则引擎,支持许多其他 IoT 协议,比如MQTT-SN、CoAP、LwM2M 等。
- Mosca:使用 Node.JS 开发的 MQTT 服务器,简单易用。
- VerneMQ:使用 Erlang 开发的 MQTT 服务器。
更多MQTT的本地服务器和云服务器可以参考https://mqtt.org/software/
环境搭建
下载EMQX
这里使用的是EMQX
,Windows下建议只是用于本地测试,不建议用于生产。
下载地址 https://www.emqx.io/zh/downloads?os=Windows
解压后如下:
启动服务
- 打开PowerShell,进入bin目录
- 启动 EMQX(两种启动方式:
emqx start
守护进程模式、emqx console
控制台模式)
emqx start |
- 启动成功后,查看节点的运行状态(如返回 pong,则表示运行状态正常)
emqx ping |
停止服务
emqx stop |
重启服务
emqx restart |
效果如下:
EMQX默认提供端口(可以在 /emqx/etc/emqx.conf
文件中修改端口号):
EMQX端口 | 说明 |
---|---|
1883 | MQTT TCP 协议端口 |
8883 | MQTT/TCP SSL 端口 |
8083 | MQTT/WebSocket 端口 |
8084 | MQTT/WebSocket with SSL 端口 |
18083 | EMQX Dashboard 管理控制台端口 |
登录EMQX Dashboard
EMQX 启动成功后,可以访问
http://127.0.0.1:18083
进入EMQX Dashboard 管理控制台进行设备连接和相关指标监控管理。
初始账号:admin,初始密码:public
创建客户端认证
创建数据库
按照下图步骤,创建客户端认证
认证方式:选择Password-Based
选择数据库: 并不是用于生产,所以直接用了内置数据库,也可以选择自己喜欢的
加密方式: 直接用默认就可以了
创建用户
选择用户管理
添加用户
我们这里创建一个测试用户 user 密码: 123456
MQTT.fx连接测试
MQTT.fx 下载地址: https://softblade.de/en/welcome/
创建连接
点击设置图标
输入Broker Address 和 Port,这里可以用127.0.0.1,如果是固定IP的话,也可以使用固定IP,我自己的IP就是192.168.1.8
在User Credentials
里面选择Use Username/Password
,输入我们刚才创建的用户user/123456
(不是控制台的用户名密码)
点击Apply
-> OK
然后点击主界面的connect
,如下表示连接成功
我们在Dashboard可以看到总连接数/在线连接数发生了变化(不需要刷新网页,会自动刷新)
再回到MQTT.fx
我们订阅一个主题: /dev/myproject/topic
主题数和订阅数也同步发生了变化
现在我们利用Publish
发布一条消息,点击Publish
按钮
发布测试消息hello world
然后切换到Subscribe
页签,可以看到在界面上已经显示了刚才发布的消息
Android连接测试
Demo地址: https://github.com/winstone-su/MqttJava
这里我使用的是雷电模拟器,需要注意的是,这里的IP使用的是我本机的IP 192.168.1.8
//服务器地址(协议+地址+端口号) |
在Android端发布一条消息
MyMqttService.publish("这是一条来自Android的消息"); |
在MQTT.fx中收到消息