vue如何使用EventSource

前后端分离的项目,vue可以使用EventSource监听后台数据变化

 1.先判断浏览器是否支持EventSource

 2.定义EventSource对象的变量,onopen是连接的时候触发、onmessage是接收消息的时候触发、onerror是连接失败时候触发,EventSource是连接失败后会重新发起连接的。

重点是{ withCredentials: true },  因为前后端分离会产生跨域问题 

完整代码(写在mounted):


const that = this
if (typeof (EventSource) !== 'undefined') {
    var audio = new Audio()
    audio.src = require('@/assets/test.wav')  // 声音文件
    const sourc = new EventSource('/sendMessage', { withCredentials: true }) // 后端接口,要配置允许跨域属性
    sourc.onopen=function(e){}
    sourc.onmessage=function(e){
       audio .play()
       that.$notify({
         title: '打印结果',
         message: e.data,
         type: 'success'
       })
       if (!userInfo) { // 退出登录
         sourc.close()
       }
     }
     sourc.onerror=function(e){}
 } else {
   that.$message.error('当前浏览器不支持服务器发送的事件')
 }

 EventSource从父接口 EventTarget 中继承了属性和方法,其内置了 3 个EventHandler 属性、2 个只读属性和 1 个方法:

EventHandler 属性

  EventSource.onopen 在连接打开时被调用。

  EventSource.onmessage 在收到一个没有 event 属性的消息时被调用。

  EventSource.onerror 在连接异常时被调用。

只读属性

  EventSource.readyState 一个 unsigned short 值,代表连接状态。可能值是 CONNECTING (0), OPEN (1), 或者 CLOSED (2)。

  EventSource.url 连接的 URL。

方法

  EventSource.close() 关闭连接

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值