详解JS HTML Web端使用MQTT通讯测试
作者:测试手账时间:2026-10-26 12:56:58浏览:602
本文介绍如何在Web端通过JavaScript实现MQTT通讯。涵盖基于360浏览器环境的界面布局,以及使用MQTTBox测试工具进行连接配置、单/多主题订阅、消息发布与取消订阅的完整代码示例和实验效果,帮助开发者快速掌握Web端MQTT集成方法。
系统环境为Windows 10 64位。
使用的开发工具为UEdit64。
运行环境指定为360安全浏览器12.1版本。
测试辅助工具选用MQTTBox。
一、编写简单布局
布局效果展示如下:

对应的布局代码结构如下:
<body style="margin: 0 auto;">
<div style="width: 500px;">服务器地址:<input style="float: right;width: 300px;" id="MQTT_ServerAdd" value="ws://www.passingworld.vip:8083/mqtt"></div>
<div style="width: 500px;">心跳时间 :<input style="float: right;width: 300px;" id="MQTT_ConnHeartbeatTime" value="30"></div>
<div style="width: 500px;">用户名 :<input style="float: right;width: 300px;" id="MQTT_UserName" value="admin"></div>
<div style="width: 500px;">密码 :<input style="float: right;width: 300px;" id="MQTT_PassWord" value="public"></div>
<div>
<button onclick="MQTT_ConnServer()">连接服务器</button>
</div>
<div style="margin-top: 20px;">
订阅消息<input id="MQTT_Subscribe_Msg">
QoS<select id="MQTT_Subscribe_QoS">
<option>0_Almost_Once</option>
<option>1_Atleast_Once</option>
<option>2_Exactly_Once</option>
</select>
<button onclick="Add_MQTT_Subscribe()">添加订阅信息</button>
</div>
<div style="margin-top: 20px;">
订阅列表
</div>
<div>
<table style="padding: 1px;width: 700px;margin-top: 5px;" border="1">
<tr style="background-color: #919191;">
<td>订阅消息</td>
<td>QoS</td>
<td>操作</td>
</tr>
</table>
</div>
<div style="margin-top: 20px;">
接收消息
</div>
<div>
<textarea id="textareaid" rows="5" cols="30" class="message1" style="width: 100%;height: 300px; min-height: 100px;"></textarea>
</div>
<div>
发布点:<input id="MQTT_Publish_Text">
发布消息:<input id="MQTT_Publish_Msg">
<button onclick="Send_MQTT_Msg()">发送消息</button>
</div>
</body>
二、编写JS代码
实现服务器连接的代码逻辑如下:
function MQTT_Connect(serveradd,KeepAlive,UserName,PassWord) {
//MQTT连接的配置
MQTT_Options: {
protocolVersion: 4; //MQTT连接协议版本
clientId: 'miniTest22222';
clean: false;
keepalive: KeepAlive;
password: UserName;
username: PassWord;
reconnectPeriod: 1000; //1000毫秒,两次重新连接之间的间隔
connectTimeout: 10 * 1000; //1000毫秒,两次重新连接之间的间隔
resubscribe: true; //如果连接断开并重新连接,则会再次自动订阅已订阅的主题(默认true)
};
//开始连接
MQTT_Client = mqtt.connect(serveradd, this.MQTT_Options);
MQTT_Client.on('connect',
function (connack) {
console.log('MQTT连接成功')
})
//服务器下发消息的回调
MQTT_Client.on("message", function (topic, payload) {
console.log(" 收到 topic:" + topic + " , payload :" + payload)
var str = document.getElementById("textareaid").value;
document.getElementById("textareaid").value = str + "\n"+"收到 topic:" + topic + " , payload :" + payload;
})
//服务器连接异常的回调
MQTT_Client.on("error", function (error) { console.log("MQTT Server Error 的回调" + error) })
//服务器重连连接异常的回调
MQTT_Client.on("reconnect", function () { console.log("MQTT Server Reconnect的回调") })
//服务器连接异常的回调
MQTT_Client.on("offline", function (errr) { console.log("MQTT Server Offline的回调" + errr) })
};
实现订阅单个主题的功能代码如下:
MQTT_SubOne = function(Topic) {
var ok = false;
if (MQTT_Client && MQTT_Client.connected) {
MQTT_Client.subscribe(Topic, function (err, granted) {
if (!err) {
console.log('订阅主题 ' + Topic + ' 成功')
ok = true;
}else { console.log('订阅主题 ' + Topic + ' 失败')
ok = false;
}
})
} else {
console.log('请先连接服务器')
ok = false;
}
return ok;
};实现订阅多个主题的功能代码如下:
function MQTT_SubMany() {
if (MQTT_Client && MQTT_Client.connected) {
MQTT_Client.subscribe({ 'Topic1': { qos: 0 }, 'Topic2': { qos: 1 } }, function (err, granted) {
if (!err) {
console.log('订阅多主题成功')
} else {
console.log('订阅多主题失败')
}
})
} else {
console.log('请先连接服务器')
}
};实现发布消息的功能代码如下:
MQTT_PubMsg = function(Topic, Msg) {
if (MQTT_Client && MQTT_Client.connected) {
MQTT_Client.publish(Topic, Msg);
console.log('发布成功->' + Topic + '->' + Msg)
} else {
console.log('请先连接服务器')
}
};实现取消订阅单个主题的功能代码如下:
function MQTT_UnSubOne(Topic) {
if (MQTT_Client && MQTT_Client.connected) {
MQTT_Client.unsubscribe(Topic);
} else {
console.log('请先连接服务器')
}
};实现取消订阅多个主题的功能代码如下:
function MQTT_UnSubOne(Topic) {
if (MQTT_Client && MQTT_Client.connected) {
MQTT_Client.unsubscribe(Topic);
} else {
console.log('请先连接服务器')
}
};三、实验效果

以上即为关于JS HTML Web端使用MQTT通讯测试的完整介绍,更多相关Web端使用MQTT通讯测试内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
作者最新文章
Mock.js 与 MSW、YApi 对比:前端接口模拟工具怎么选
2026-11-04 22:55:05
Turf.js 安装与引入:NPM 打包及 CDN 快速上手指南
2026-11-03 23:23:32
JS代码混淆后无法调试?Source Map配置与浏览器断点技巧
2026-11-03 14:12:17
前端JS发送HTTP请求遇到跨域(CORS)报错怎么解决
2026-11-02 10:30:07
Three.js怎么安装:npm引入与CDN加载方法
2026-11-02 09:23:52
