浏览器如果要使用mqtt,需要引用js包:
<script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
基本使用:
// Create a client instance
var options = {
//mqtt客户端的id,这里面应该还可以加上其他参数,具体看官方文档
clientId: 'mqttjs_' + Math.random().toString(16).substr(2, 8)
}
//console.log(options.clientId);
//浏览器采用websocket协议,host主机地址为192.168.0.200,端口为9001,路径为/mqtt
var client = mqtt.connect("ws://192.168.0.200:9001/mqtt",options) // you add a ws:// url here
//建立连接
client.on('connect', function () {
console.log("connect success!")
//订阅主题 presence
client.subscribe('presence', function (err) {
if (!err) {
console.log("subscribe success!")
//发布主题presence,消息内容为Hello mqtt
client.publish('presence', 'Hello mqtt')
}else{
//打印错误
console.log(err)
}
})
})
//如果连接错误,打印错误
client.on('error', function (err) {
console.log(err)
client.end()
})
//如果client订阅主题成功,那么这里就是当接收到自己订阅主题的处理逻辑
client.on('message', function (topic, message) {
// message is Buffer,此处就是打印消息的具体内容
console.log('-> ' + message.toString())
})
其实,对于mqtt来说,主要就是本客户端去订阅一个主题,然后另外客户端如果发布了一个该主题的消息,那么本客户端就能收到该条消息并处理。
还有要注意的就是QoS,它的取值分别为0,1,2 。
自己可以百度一下他们三者的区别。有什么不清楚欢迎留言探讨,共同进步!我也是刚学mqtt.
end