vue使用mqtt服务端实现即时通讯

npm install mqtt@3.0.0

注意要指定下载3.0.0版本

// 引入MQTT
const mqtt = require('mqtt/dist/mqtt.js')
// 声明client
data(){return {client: null}
}
//方法
//连接服务器connect() {let options = {username: "xxx",password: "xxxx",cleanSession : false,keepAlive:60,clientId: 'mqttjs_' + Math.random().toString(16).substr(2, 8),connectTimeout: 4000}//如果是apk,ws换成wxthis.client = mqtt.connect('ws://ip:port/mqtt',options);this.client.on("connect", (e)=>{console.log("成功连接服务器:",e);// 订阅 topic。如果订阅多个["test1","test2"]this.client.subscribe(['top/#', 'three/#', '#'], { qos: 1 }, (err)=> {if (!err) {console.log("订阅成功");//向主题叫“pubtop”发布一则内容为'hello,this is a nice day!'的消息this.publish("pubtop", 'hello,this is a nice day!')} else {console.log('消息订阅失败!')}});});//重新连接this.reconnect()//是否已经断开连接this.mqttError()//监听获取信息this.getMessage()}//发布消息@topic主题  @message发布内容publish(topic,message) {if (!this.client.connected) {console.log('客户端未连接')return}this.client.publish(topic,message,{qos: 1},(err) => {if(!err) {console.log('主题为'+topic+ "发布成功")}})}
//监听接收消息getMessage() {this.client.on("message", (topic, message) => {if(message) {console.log('收到来着',topic,'的信息',message.toString())const res = JSON.parse(message.toString())//console.log(res, 'res')switch(topic) {case 'top/#' :this.msg = resbreak;case 'three/#' :this.msg = resbreak;case 'three/#' :this.msg = resbreak;default:returnthis.msg = res}this.msg = message}});}
//监听服务器是否连接失败mqttError() {this.client.on('error',(error) => {console.log('连接失败:',error)this.client.end()})}
//取消订阅unsubscribe() {this.client.unsubscribe(this.mtopic, (error)=> {console.log('主题为'+ this.mtopic+'取消订阅成功',error)})}//断开连接unconnect() {this.client.end()this.client = nullconsole.log('服务器已断开连接!')},
//监听服务器重新连接reconnect() {this.client.on('reconnect', (error) => {console.log('正在重连:', error)});}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/17200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二阶段web基础与http协议

dns与域名 网络是基于tcp/ip协议进行通信和连接的 应用层-----传输层-----网络层-----数据链路层-----物理层 ip地址,每一台主机都有一个唯一的地址标识(固定的ip地址) 1.区分用户和计算机 2.通信 ip地址的问题在于32位二进制数组成的&…

触发器实现海豚调度失败企业微信自动告警

原理 触发器监控工作流实例表,当工作流实例表中的状态更新后,针对状态为失败的任务进行企业微信告警。 发送企业微信消息函数 # 必须在pg的主机上线安装requests模块 pip install requests # 以postgres用户登陆psql客户端到etl数据库 psql etl -U po…

ClickHouse的安装启动

安装步骤 1.关闭防火墙 2.修改资源限制配置文件 2.1 路径:/etc/security/limits.conf 在末尾添加: * soft nofile 65536 #任何用户可以打开的最大的文件描述符数量,默认1024 这里的设置会限制tcp连接数 * hard nofile 65536 * soft nproc…

express学习笔记3 - 三大件

便于统一管理router,创建 router 文件夹,创建 router/index.js: const express require(express)// 注册路由 const router express.Router() router.get(/,function(req,res){res.send(让我们开始express之旅) }) /*** 集中处理404请求的…

使用矢量数据库打造全新的搜索引擎

在技术层面上,矢量数据库采用了一种名为“矢量索引”的技术,这是一种组织和搜索矢量数据的方法,可以快速找到相似矢量。其中关键的一环是“距离函数”的概念,它可以衡量两个矢量的相似程度。 1.矢量数据库简介 矢量数据库是专门…

抖音短视频seo矩阵系统源码开发部署技术分享

抖音短视频的SEO矩阵系统是一个非常重要的部分,它可以帮助视频更好地被搜索引擎识别和推荐。以下是一些关于开发和部署抖音短视频SEO矩阵系统的技术分享: 一、 抖音短视频SEO矩阵系统的技术分享: 关键词研究:在开发抖音短视频SEO矩…

限流式保护器在古建筑电气火灾中的应用

安科瑞 华楠 【摘要】针对文物古建筑本身火灾危险性大,并且其内部电气问题较多,增加了火灾危险性的特点,提出了预防电气火灾的措施。 【关键词】古建筑;电气防火;限流式保护器; 文物古建筑是中华民族历史文…

纯nginx制作文件上传下载服务器

什么是webdav webdav 是一组超文本传输协议的技术集合,有利于用户键协同编辑和管理存储在万维网服务器文档。同时来说就是,webdav可以让用户直接存储,下载,编辑文件,操作文件需要进行用户认证 基于nginx快速搭建webdav…

《MySQL 实战 45 讲》课程学习笔记(一)

基础架构:一条 SQL 查询语句是如何执行的? MySQL 的基本架构 MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层 包括连接器、查询缓存、分析器、优化器、执行器;涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数&…

idea模块的pom.xml被划横线,不识别的解决办法

目录 问题: 解决办法: 1.打开设置 2. 取消勾选 3.点击确认 4.解决 问题提出: 写shi山的过程中,给模块取错名字了,改名的时候不知道点到了什么,一个模块的pom.xml变成灰色了&#xff0…

记RT-Thread rt_timer_start函数的问题

我使用的RT-Thread版本为4.0.3。 我看了5.0.1的代码,此问已经被修复。 在4.0.3版本中的rt_timer_start函数源码如下: rt_err_t rt_timer_start(rt_timer_t timer) {unsigned int row_lvl;rt_list_t *timer_list;register rt_base_t level;rt_list_t *r…

Rust调试【三】

Local Debug: vscode CodeLLDB extension memory leak analysis: Rust and Valgrind FFI Memory wrapping: Foreign Function Interface FFI panic handling: Panic handling

排序算法(冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序、计数排序)

🍕博客主页:️自信不孤单 🍬文章专栏:数据结构与算法 🍚代码仓库:破浪晓梦 🍭欢迎关注:欢迎大家点赞收藏关注 文章目录 🍓冒泡排序概念算法步骤动图演示代码 &#x1f34…

JS关于多张图片上传显示报错不影响后面图片上传方法

关于多张图片上传或者下载显示报错后会程序会终止执行,从而影响后面图片上传。 解决方法: /*能正常访问的图片*/ const url https://2vimg.hitv.com/100/2308/0109/5359/dqKIZ7d4cnHL/81Vu0c.jpg?x-oss-processimage/format,webp; /*不能正常下载的图…

谷歌: 安卓补丁漏洞让 N-days 与 0-days 同样危险

近日,谷歌发布了年度零日漏洞报告,展示了 2022 年的野外漏洞统计数据,并强调了 Android 平台中长期存在的问题,该问题在很长一段时间内提高了已披露漏洞的价值和使用。 更具体地说,谷歌的报告强调了安卓系统中的 &quo…

Java阻塞队列

什么阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方…

vue项目开发常用工具类

防止重复造轮子,将经常用的函数进行记录,也参考网上的并一起进行记录,后续会持续更新常用到的函数工具类方法😉😉 /** 验证手机号是否合格* true--说明合格*/ export function isPhone(phoneStr) {let myreg /^[1][3,…

艺人商务代言:避雷策略与成功合作之道

避免在艺人商务代言中遇到风险,是每个企业和艺人都应该高度重视的问题。代言活动是一种有效的市场营销手段,可以为企业带来广泛的曝光和销售增长,同时也能让艺人获得额外的收入和更高的知名度。然而,不慎选择错误的代言合作可能带…

Vue3--->组合式API与Pinia

目录 使用create-vue搭建 1、使用create-vue创建项目 2、项目目录和关键文件 组合式API 1、组合式API - setup选项 2、组合式API - reactive和ref函数 3、组合式API - computed 4、组合式API - watch 1、基础使用 - 侦听单个数据 2、基础使用 - 侦听多个数据 3、immediate&…

基于 FFmpeg 的跨平台视频播放器简明教程(七):使用多线程解码视频和音频

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…