EventSource前端使用(需要添加header等自定义配置)

本文介绍了原生EventSource的定义、使用方式及注意事项,并展示了如何使用EventSourcePolyfill进行更自定义的配置,如设置headers。通过示例代码,解释了如何监听open、message和error事件,以及如何关闭连接。EventSourcePolyfill作为一个封装库,解决了原生API在自定义配置上的局限性。
摘要由CSDN通过智能技术生成

一、原生EventSource

(一)定义:

MDN详解:Web API 接口参考>EventSource

(二)使用方式:

  const eventSource = new EventSource('/api/test');
  // 正常的EventSource,我们只关心以下三个事件
  /*
  * open:订阅成功(和后端连接成功)
  */
  eventSource.addEventListener("open", function(e) {
    console.log('open successfully')
  })
  /*
  * message:后端返回信息,格式可以和后端协商
  */
  eventSource.addEventListener("message", function(e) {
    console.log(e.data)
  })
  /*
  * error:错误(可能是断开,可能是后端返回的信息)
  */
  eventSource.addEventListener("error", function(err) {
    console.log(err)
    // 类似的返回信息验证,这里是实例
    err && err.status === 401 && console.log('not authorized')
  })
  
  // 需要关闭了
  eventSource.close()

Tip:我们值得注意的语法:new EventSource(url, configuration)
看一下MDN:

// 1、参数
(1) url:一个USVString ,它代表远程资源的位置
(2) configuration 可选:为配置新连接提供选项。
	可选项是:withCredentials,默认为 false,指示 CORS 是否应包含凭据( credentials )// 2、返回值
一个新建的 EventSource 对象,如果指定了configuration, 则按其配置;否则,配置为合适的基本默认值。

发现要是更自定义的配置,比如加header什么的就不行了,所以我找了找合适的封装后的库,还真找到了:
github地址:EventSource polyfill

二、EventSource polyfil

(一)使用方式

import { EventSourcePolyfill } from 'event-source-polyfill';
const eventSource = new EventSourcePolyfill('/api/test', {
  headers: {
    'X-Custom-Header': 'value'
  }
});
/*
  * open:订阅成功(和后端连接成功)
  */
  eventSource.addEventListener("open", function(e) {
    console.log('open successfully')
  })
  /*
  * message:后端返回信息,格式可以和后端协商
  */
  eventSource.addEventListener("message", function(e) {
    console.log(e.data)
  })
  /*
  * error:错误(可能是断开,可能是后端返回的信息)
  */
  eventSource.addEventListener("error", function(err) {
    console.log(err)
    // 类似的返回信息验证,这里是实例
    err && err.status === 401 && console.log('not authorized')
  })
  
  // 需要关闭了
  eventSource.close()

基本使用方法如此,此文只是工作中遇到使用,具体定义MDN写的很清楚了,如有疑问也可留言与我交流,最后的最后,希望能帮到大家解决业务问题!

  • 14
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值