安装好服务器端之后,使用mqtt的客户端对服务器进行相关测试。
有不少mqtt客户端,mosquito提供了命令行进行测试,我知道的还有mqtt spy也是一个mqtt客户端的可视化界面,这里使用MQTT.fx,安装及简单使用可参考MQTT.fx的安装和使用这篇文章
创建mqtt连接。指定连接相关信息,包括连接名称(可以随意输入)、代理地址(安装在本地,所以输入127.0.0.1)、端口号(MQTT缺省端口为1883),然后单击“ok”设置完成。其他设置先保持缺省值,可之后慢慢学习。
点击连接,出现以下界面表示连接成功
订阅默认主题home/garden/fountain(可编辑成任何主题)
然后在publish下发布相同主题的消息
subscribe则可以订阅到刚才刚发布的消息。
dashboard中展示出刚才发布订阅消息操作中,统计数据的变化
命令提示符中输入bin\emqx stop即可关闭
一般人不会出现的报错,丢了一班人的脸(忽略忽略)
Failed to start Ranch listener 'http:management' in ranch_tcp:listen([{cacerts,'...'},{key,'...'},{cert,'...'},{port,8080},{nodelay,true},{send_timeout_close,true},{send_timeout,15000},{backlog,512}]) for reason eacces (permission denied)
[Plugins] Load plugin emqx_management failed, cannot start plugin emqx_management for {...}
其原因为8080端口被占用,解决办法:
1. 找出占用8080端口的程序,结束进程,然后重启EMQ。
# 在命令提示符中输入下面命令,查看端口8080是否被占用
netstat -aon|findstr 8080
# 结果:此处8080端口被PID 5744占用,监听5744端口中
# TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 5744
# TCP [::]:8080 [::]:0 LISTENING 5744
# 输入下面命令,查看时哪个进程或程序占用了某个端口;或者直接进入任务管理器查看详细信息中PID为5744的进程。
tasklist|findstr 5744
# 用以下命令关闭xxx.exe;或者直接在任务管理器中关闭相关进程即可
taskkill /f /t /im xxx.exe
# 再次检查8080端口是否被占用,如果没有信息返回,表示没有被占用,可放心使用啦
netstat -aon|findstr 8080
2. 位于etc\plugins下,修改emqx_management.conf文件中端口为没有被占用的端口,然后重启EMQ
# 修改此处的8080端口为其他没有被占用的端口,如8090
management.listener.http = 8090
常见MQTT服务器搭建与试用
MQTT.fx的安装和使用
如何查看某个端口被谁占用