当前位置:   article > 正文

MQTT的入门级使用方法_mqtt使用

mqtt使用

前言

作为小萌新的第一篇文章。

我是在Windows上成功运行的。

在此浅讲一下mqtt的协议简单用法。

逻辑图如下:

 

一.所需软件和配置。

代理方面:nginx,fiddler

使用到的编程软件:notepad++(或电脑自带记事本)

mqtt消息服务器:emqx

浏览器:chrome

二.软件下载地址。

nginx:

英语官方:nginx news

中文文档:http://www.nginx.cn/doc/

fiddler:

Download Fiddler Web Debugging Tool for Free by Telerik

emqx:

快速开始 | EMQX 5.0 文档

chrome:

Google Chrome 网络浏览器

三.所需配置

emqx:在WebSocket客户端里面配置

(附加:第一次使用可以直接开多个连接,在本机上自己发给自己测试)

配置html:

  1. <script type="text/javascript" src="http://www.my-soft.net.cn/zctx/Js/third/jquery.min.js"></script>
  2. <script type="text/javascript" src="http://www.my-soft.net.cn/zctx/Js/third/mqttws31.js"></script>
  3. MQTT也可以为H5页面直接访问,如下是一个基于Websockets的MQTT调试器,这里使用浏览器+Nginx+Mosquitto演示。
  4. <br/>
  5. <table width=100% border=1px>
  6. <tr><td style="width:20%">Client</td><td style="width:80%"> <input id="client" type="text" value="client_20220603" /></td></tr>
  7. <tr><td>Host</td><td> <input id="host" type="text" value="www.my-soft.net.cn"/></td></tr>
  8. <tr><td>Port</td><td> <input id="port" type="number" value="443"/> </td></tr>
  9. <tr><td>SSL</td><td> <input id="ssl" type="checkbox" checked/> </td></tr>
  10. <tr><td>User</td><td> <input id="user" type="text" value="user"/> </td></tr>
  11. <tr><td>Passwd</td><td> <input id="pwd" type="text" value="passwd"/> </td></tr>
  12. <tr><td>Subscribe Topic</td><td> <input id="subtopic" type="text" value="ccnet/#"/> </td></tr>
  13. <tr><td>Publish Topic</td><td> <input id="pubtopic" type="text" value="ccnet/up/abc"/> </td></tr>
  14. <tr><td>State</td><td id="state"> </td></tr>
  15. <tr><td></td><td>
  16. <input type="button" value="Init" onclick="javascript:onInit();"/>
  17. <input type="button" value="Send" onclick="javascript:onSend();"/>
  18. </td></tr>
  19. <tr><td>Publish Message</td><td> <textarea id="message" cols=50 rows=2>Hello , Websockets world!</textarea> </td></tr>
  20. <tr><td>Subscribe Messages</td><td> <textarea id="submessage" cols=50 rows=10></textarea> </td></tr>
  21. </table>
  22. <script>
  23. var ind = 0;
  24. var ssl = true;
  25. var mqtt;
  26. var client = $("#client").val();
  27. var host = $("#host").val();
  28. var port = parseInt($("#port").val());
  29. var user = $("#user").val();
  30. var pwd = $("#pwd").val();
  31. // onInit
  32. function onInit(){
  33. client = $("#client").val();
  34. host = $("#host").val();
  35. port = parseInt($("#port").val());
  36. user = $("#user").val();
  37. pwd = $("#pwd").val();
  38. console.log(ssl);
  39. ind = 0;
  40. MQTTconnect();
  41. }
  42. // onConnect 事件
  43. function onConnect() {
  44. console.log('connected.');
  45. $("#state").text('connected.');
  46. // 订阅 download topic
  47. var subOptions = {
  48. qos: 1,
  49. onSuccess: onSubscribe
  50. };
  51. mqtt.subscribe($("#subtopic").val(), subOptions);
  52. }
  53. function onSend() {
  54. console.log('onSend.');
  55. $("#state").text('onSend.');
  56. var raw_message = $("#message").val();
  57. message = new Paho.MQTT.Message(raw_message);
  58. message.destinationName = $("#pubtopic").val();
  59. console.log('sending message: ' + raw_message );
  60. mqtt.send(message);
  61. }
  62. // 订阅主题成功事件
  63. function onSubscribe(context) {
  64. console.log('subscribe success');
  65. console.log(context);
  66. $("#state").text('subscribe success');
  67. }
  68. // 连接失败事件
  69. function onFailure(message) {
  70. console.log('connect failed.');
  71. $("#state").text('connect failed.');
  72. }
  73. // onMessageArrived 事件
  74. function onMessageArrived(message) {
  75. console.log('new message arrived...');
  76. $("#state").text('new message arrived...');
  77. console.log(message.payloadString);
  78. $("#submessage").text( ++ind + ":" + message.payloadString + "\r\n" + $("#submessage").text());
  79. }
  80. // 建立 MQTT websocket 连接
  81. function MQTTconnect() {
  82. console.log('connecting to ' + host + ':' + port + " listen on " + client);
  83. $("#state").text('connecting to ' + host + ':' + port + " listen on " + client);
  84. mqtt = new Paho.MQTT.Client(host, port, client);
  85. var options = {
  86. timeout: 3,
  87. onSuccess: onConnect,
  88. onFailure: onFailure,
  89. useSSL: ssl, // https required
  90. userName: user,
  91. password: pwd,
  92. mqttVersion: 4
  93. };
  94. mqtt.onMessageArrived = onMessageArrived;
  95. mqtt.connect(options);
  96. }
  97. $("#ssl").click(function () {
  98. if ($(this).prop("checked")) {
  99. ssl = true;
  100. } else {
  101. ssl = false;
  102. }
  103. });
  104. </script>

html效果图

 

配置nginx:

在nginx的目录下conf里面创建一个conf形式的文件加入此配置。

  1. #这个配置mqtt
  2. map $http_upgrade $connection_upgrade{
  3. default upgrade;
  4. '' close;
  5. }
  6. server
  7. {
  8. #访问80端口
  9. listen 80;
  10. #listen 443 ssl;
  11. #ssl_certificate /etc/nginx/conf.d/www.domain.com/server.crt;
  12. #ssl_certificate_key /etc/nginx/conf.d/www.domain.com/server.key;
  13. #ssl_password_file /etc/nginx/conf.d/www.domain.com/pwd.txt;
  14. #server_name后面是配置的域名(可根据自己喜好:www.abc.com等)
  15. server_name www.domain.com;
  16. #这个配置访问配置好的html(root +html的绝对地址)(index +html的名字)
  17. location / {
  18. root D:/TX/mqtt;
  19. index index.html;
  20. }
  21. #(端口号要与emqx里面设置的一样)
  22. location /mqtt {
  23. proxy_pass http://127.0.0.1:8083/mqtt/;
  24. proxy_http_version 1.1;
  25. proxy_set_header Upgrade $http_upgrade;
  26. proxy_set_header Connection $connection_upgrade;
  27. }
  28. }

注意事项:

1.nginx在每次开机后需要启动

start nginx

2.nginx每次更改配置后需要在cmd里面重启

nginx -s reload

3.查看是否有多个nginx

ps aux|grep nginx

4.杀死进程

kill -s SIGTERM (对应pid号)

5.每次更新nginx都需要重启(必须)

6.每次重启玩nginx后chrome都需要重启或刷新(建议关了再开)

fiddler配置:

点击菜单栏TOOLS——HOSTS勾选Enable后输入  {IP地址(加空格)自己编辑的域名}点击save

也可以在C:\Windows\System32\drivers\etc\hosts里面添加 {IP地址(加空格)自己编辑的域名}(不推荐)

IP地址可以选择127.0.0.1(代表本机)

或者在查看自己所连局域网的IP地址(192.168.XXX.XXX)不同网络下IP不同

小技巧:使用fiddler代理可以让手机也进入这个界面(需要在同一局域网里面)

四.效果演示:

 

 

这里因为手机编译的问题出现乱码,稍微调整一下html就可以修改过来。  

 五.结束语。

作为我的处女作,还是有些小兴奋的。如果有什么错误之处,还望各位指出,以便我更正错误。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/188587
推荐阅读
相关标签
  

闽ICP备14008679号