最近在做商家后台管理系统,在使用小程序或者app进行下单后,后台管理系统需要有实时的提醒,类似于美团或者饿了么的“您有新的订单,请注意查收”

具体的操作我没有写,是其他同事整的这一块。下面记录一下百度到的相关知识点。

vue + webSocket 实时任务信息通知

WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

websocket 特点

建立在TCP协议之上,服务端的实现比较容易;
与HTTP协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用HTTP协议,因此握手时不容易屏蔽,能通过各种HTTP代理服务器;
数据格式比较轻量,性能开销小,通信高效;
可以发送文本,也可以发送二进制数据
没有同源限制,客户端可以与任意服务器通信
协议标识符是 WS(如果加密,则为WSS),服务器网址就是URL

VUE + WebSocket 长链接实现

在项目的创建 utils/websocket.js

<!--引入store,用于管理socket推送来的消息-->
import store from '../store'
<!--封装websocket对象-->
const WS = {$ws:null, // webscoket实例wsUrl: 'ws://xxxxx.com:80/xxx', // websocket链接地址<!--初始化webSocket-->createWS:function(){if('WebSocket' in window){this.$ws = new WebSocket(wsURl)this.$ws.onopen = this.wsOpenthis.$ws.onmessage = this.wsMessagethis.$ws.onerror = this.wsErrorthis.$ws.onclose = this.wsClose} else {alert('当前浏览器不支持webSocket')}},<!--webSocket 打开-->wsOpen: function() {this.$ws.send('连接成功')console.log('== websocket open ==')<!--开始心跳-->heartBeat.start()},<!--websocket 接收到服务器消息-->wsMessage:function(msg) {console.log('== websocket message ==', msg)<!--接受到消息,重置心跳-->heartBeat.reset()store.commit('SET_WS_MSG', msg.data)},<!--websocket 发生错误-->wsError: function(err){console.log('== websocket error ==', err)},<!--websocket 关闭连接-->wsClose: function(event){console.log('== websocket close ==', event)}
}
<!--webSocket 心跳-->
const heartBeat = {timeout:30000, // 心跳重连时间timeoutObj:null, // 定时器reset:function(){clearInterVal(this.timeoutObj)console.log('websocket 心跳')WS.start()},start:function(){this.timeoutObj = setTimeout(function(){if(WS.$ws.readyState === 1){WS.$ws.send('HeartBeat')}},this.timeout)}
}
export default WS

在main.js中引入WS,挂载到Vue原型上

import Vue from 'vue'
import WS from '@/util/websocket'
Vue.prototype.$ws = WS

在store/index.js创建全局数据存储

const store= new Vuex.Store({state:{webSocketMsg:''},mutations:{SET_WS_MSG (state, msg) =>{state.webSocketMsg = msg}}})

在单个组件内部使用

computed:{getWsMsg (){return this.$store.state.webSocketMsg}
},
watch:{getWsMsg:{handler: function(newVal) {console.log(newVal)alert('接收到webSocket推送'+ newVal)}}
}

如果要在所有的界面都能接收socket推送消息,并弹出提示可以在布局组件(Layout.vue …)中监听

computed:{getWsMsg (){return this.$store.state.webSocketMsg}
},
watch:{getWsMsg:{handler: function(newVal) {console.log(newVal)alert('接收到webSocket推送'+ newVal)}}
}

vue实现语音播报功能

1,创建一个js文件 (voicePrompt.js)

function voicePrompt (text){new Audio('http://tts.baidu.com/text2audio?cuid=baiduid&lan=zh&ctp=1&pdt=311&tex=' + text).play();
}export {voicePrompt
}

2在main.js中写入

import * as voicePromptFun from './utils/voicePrompt'
Vue.prototype.voicePrompt = voicePromptFun.voicePrompt  //语音提醒

3在其他页面调用

this.voicePrompt('皮卡丘');

vue websocket实现消息推送和语音提醒功能相关推荐

  1. Spring clound+VUE+WebSocket实现消息推送 一(即时通讯)

    需求: 当用户进行某个操作,需要通知其他用户时,其他用户可以实时接收消息. 工程为 Spring cloud + VUE . 技术实现: Spring Cloud.Spring boot.vue.we ...

  2. vue-admin websocket接收消息推送+语音提示(详细代码)

    websocket接收消息推送+语音提示 这个是同事的代码,我拿来记录一下,希望以后可以看得懂-- utils/websocket.js const audioUrl = require('@/ass ...

  3. Vue-全局websocket 实现消息推送

    在上一篇文章 WebSocket 消息推送https://blog.csdn.net/qq_63312957/article/details/125375122?spm=1001.2014.3001. ...

  4. springboot定时发送短信_springboot 整合websocket实现消息推送(主动推送,具体用户推送,群发,定时推送)...

    websocket springboot 整合websocket实现消息推送(主动推送,具体用户推送,群发,定时推送) 使用WebSocket构建交互式Web应用程序 本指南将引导您完成创建" ...

  5. php通知websocket,php实现websocket实时消息推送

    php实现websocket实时消息推送,供大家参考,具体内容如下 SocketService.php /** * Created by xwx * Date: 2017/10/18 * Time: ...

  6. python websocket实现消息推送_python Django websocket 实时消息推送

    [实例简介] Django websocket 实时消息推送 服务端主动推送 调用 send(username, title, data, url) username:用户名 title:消息标题 d ...

  7. python websocket实时消息推送

    python websocket实时消息推送 十分想念顺店杂可... 本人写的渣,大神勿喷. 转载请附带本文链接,谢谢. 服务端代码 # -*- coding: utf-8 -*- # @Time : ...

  8. java整合消息推送_SpringMVC整合websocket实现消息推送及触发功能

    本文为大家分享了SpringMVC整合websocket实现消息推送,供大家参考,具体内容如下 1.创建websocket握手协议的后台 (1)HandShake的实现类 /** *Project N ...

  9. web实现消息推送及桌面提醒

    2019独角兽企业重金招聘Python工程师标准>>> 就类似我们之前描述的,来一个 HTML5 提醒面板,再放一段语音.这个就有些类似12306 的抢票了. 还是先看下我们的效果图 ...

  10. 【微信早安定时推送3.0最牛版】微信消息推送后 可提醒可顶置,聊天框名称,头像都可修改~

    微信早安3.0最牛版重磅推出!!! 全网最全最详细教程,无基础看过的都说好,不白找. 往期推送: 微信早安推送1.0版: https://blog.csdn.net/A_Xunla/article/d ...

最新文章

  1. uboot源码分析笔记
  2. 比特币现金支持者为BCH引入了各种新概念
  3. 解決 IE10 浏览器无法使用 ASP.NET From 验证登录的问题
  4. git代码回滚的几种方式
  5. Xcode中捕获iphone/ipad/ipod手机摄像头的实时视频数据
  6. CentOS7下Spark集群的安装
  7. 双11电商手机大战盘点,大神荣耀各成势力
  8. acdream 1735 输油管道 贪心
  9. JSP项目《教师年终个人成果统计系统的设计与应用》实战(一)——密码加密算法...
  10. 3dmax:3dmax三维VR渲染设置(VR间接照明GI栏、【VR间接(全局)照明】发光贴图、光子贴图、BF算法、灯光贴图、灯光缓存)之详细攻略(切记收藏!)
  11. 一级计算机基础知识考试成绩截图,全国计算机一级考试成绩分析与总结
  12. linux操作系下RAR的使用
  13. 【C++基础】第一节课 C++基础知识
  14. 卸载Resharper
  15. 怎么去除WORD的背景颜色
  16. windows 7 cmd(ms DOS)命令窗口没有滚动条 还原CMD默认设置
  17. 最佳化三维建模与重构中的神经网络先验
  18. PB中执行动态SQL语句(温故知新)
  19. Freshman的插入排序实现
  20. uniapp一键登录流程及代码

热门文章

  1. 网页转圈打不开服务器,打不开网页怎么回事
  2. contiki(官网简介翻译)介绍
  3. 【Paper】法律科技方面论文汇总
  4. ubuntu流量监控_ubuntu 流量监控
  5. 自己打羽毛球的若干问题
  6. 平面设计美学的意义是什么?
  7. 测试换发型用啥软件,什么软件可以测试自己适合的发型
  8. 网站PV,UV是什么意思?
  9. 方图来袭,且看483万亿美元的场外衍生品市场如何风云变幻
  10. 在 CSDN 官宣了,二哥要和华为大佬一起创业了!也许以后洛阳的小伙伴回乡又多了一个选择!