日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

在VUE中利用MQTT协议实现即时通讯

發布時間:2023/12/20 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在VUE中利用MQTT协议实现即时通讯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

建議先閱讀:
在Node.js下運用MQTT協議實現即時通訊及離線推送

以前嘗試在vue中用上mqtt,了解到mqtt實質上是基于websocket進行數據通信,所以上文中在node下實現的服務端此時不能滿足需求

代碼

服務端: server.js

let http = require('http') , httpServer = http.createServer() , mosca = require('mosca')let settings = {port: 5112,persistence:{factory: mosca.persistence.Mongo,url: "mongodb://localhost:27017/mosca"} } let server = new mosca.Server(settings)server.attachHttpServer(httpServer) server.on('published', function(packet, client) {console.log('Published', packet.payload.toString()); }) httpServer.listen(3003) server.on('ready', function(){console.log('server is running at port 3003'); })

服務端mosca的實例化并沒有改動
而是將其為websocket形式進行適配

客戶端: mqtt.js

let mqtt = require('mqtt') let client = {} export default {launch(id, callback) {client = mqtt('mqtt://ip', {port: 3003,clientId: id,clean: false})client.on('message', (topic, message) => {callback(topic, message)})},end() {client.end()},subscribe(topic) {client.subscribe(topic, {qos: 1})console.log('subscribe:', topic)},publish(topic, message) {client.publish(topic, JSON.stringify(message), {qos: 1})} }

獨立地對mqtt進行簡單地封裝,方便調用
值得注意的是此時的協議頭仍為mqtt,
但mqtt源碼會以ws形式進行通信

main.js:
再把mqtt綁到vue原型鏈上

import mqtt from './api/mqtt' Vue.prototype.$mqtt = mqtt

現在便可在vue環境中對mqtt進行調用

this.$mqtt.launch(this.user._id, (topic, source) => {console.log('message: ', JSON.parse(source.toString())) })

轉載請注明出處 ; )

總結

以上是生活随笔為你收集整理的在VUE中利用MQTT协议实现即时通讯的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。