sample.html 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <div>
  9. <label>目标Topic:<input id="targetTopicInput" type="text"></label><br>
  10. <label>发送消息:<input id="messageInput" type="text"></label><br>
  11. <button onclick="sendMessage()">发送</button>
  12. <button onclick="clearMessage()">清空</button>
  13. <div id="messageDiv"></div>
  14. </div>
  15. </body>
  16. <script src="../mqtt.min.js"></script>
  17. <script>
  18. //RabbitMQ的web-mqtt连接地址
  19. const url = '[[${mqtt_url}]]';
  20. //获取订阅的topic
  21. const topic = getQueryString("topic");
  22. //连接到消息队列
  23. let client = mqtt.connect(url);
  24. client.on('connect', function () {
  25. //连接成功后订阅topic
  26. client.subscribe(topic, function (err) {
  27. if (!err) {
  28. showMessage("订阅topic:" + topic + "成功!");
  29. }
  30. });
  31. });
  32. //获取订阅topic中的消息
  33. client.on('message', function (topic, message) {
  34. showMessage("收到消息:" + message.toString());
  35. });
  36. //发送消息
  37. function sendMessage() {
  38. let targetTopic = document.getElementById("targetTopicInput").value;
  39. let message = document.getElementById("messageInput").value;
  40. //向目标topic中发送消息
  41. client.publish(targetTopic, message);
  42. showMessage("发送消息给" + targetTopic + "的消息:" + message);
  43. }
  44. //从URL中获取参数
  45. function getQueryString(name) {
  46. let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  47. let r = window.location.search.substr(1).match(reg);
  48. if (r != null) {
  49. return decodeURIComponent(r[2]);
  50. }
  51. return null;
  52. }
  53. //在消息列表中展示消息
  54. function showMessage(message) {
  55. let messageDiv = document.getElementById("messageDiv");
  56. let messageEle = document.createElement("div");
  57. messageEle.innerText = message;
  58. messageDiv.appendChild(messageEle);
  59. }
  60. //清空消息列表
  61. function clearMessage() {
  62. let messageDiv = document.getElementById("messageDiv");
  63. messageDiv.innerHTML = "";
  64. }
  65. </script>
  66. </html>