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中收到消息

