前端怎么用 EventSource? EventSource怎么配置请求头及加参数? EventSourcePolyfill使用方法
li@h 2024-06-10 13:33:19 阅读 52
EventSource
EventSource 接口是 web 内容与服务器发送事件通信的接口。
一个 EventSource 实例会对 HTTP 服务器开启一个持久化的连接,以 text/event-stream 格式发送事件,此连接会一直保持开启直到通过调用 EventSource.close() 关闭。
EventSource 服务器发送事件是单向的。数据消息只能从服务端发送到客户端。
如果想了解更多请查看 EventSource 文档
EventSource使用方式
这里其实和webSocket 使用方式其实很像
这里需要注意 我在网上查了说参数可以配置headers(请求头) 实际使用的时候我这边传入请求头是没有生效(可能是我操作有误吧)
首先先安装EventSource
npm install eventsource
示例代码
//创建一个新的 EventSource 对象的同时,你可以指定一个接受事件的 URI// 如果需要加参数的话是在url 后面拼接参数 sysm/user/1 const eventSource = new EventSource('url') //与事件源的连接刚打开时触发 eventSource.onopen = function (e) { console.log(e, "连接刚打开时触发"); }; /* * message:后端返回信息,格式可以和后端协商 */ eventSource.onmessage = function (e) { console.log(e,'后端返回信息,格式可以和后端协商'); }; /* * error:错误(可能是断开,可能是后端返回的信息) */ eventSource.onerror = function (e) { console.log(e, "连接无法打开时触发"); eventSource.close(); // 关闭连接 setTimeout(() => { //关闭连接后重新调用 }, 5000); }; // 关闭连接 // eventSource.close();
EventSourcePolyfill 是EventSource封装的一个方法,EventSourcePolyfill 可以配置请求头
EventSourcePolyfill可以配置请求头 目前我EventSource配置请求头不生效所以才用 EventSourcePolyfill
首先先安装 EventSourcePolyfill
npm install event-source-polyfill
引用 EventSourcePolyfill
import { EventSourcePolyfill } from "event-source-polyfill";
示例代码
// 如果需要加参数的话是在url 后面拼接参数 sysm/user/1 const eventSource = new EventSourcePolyfill( `${ process.env.VUE_APP_BASE_API}/sysm/user/1`, { heartbeatTimeout:3*60*1000,//这是自定义配置请求超时时间 默认是4500ms(印象中是) headers: { Authorization: "Bearer " + 'token', }, } ); /* * open:订阅成功(和后端连接成功) */ eventSource.onopen = function (e) { console.log(e, "连接刚打开时触发"); }; /* * message:后端返回信息,格式可以和后端协商 */ eventSource.onmessage = function (e) { console.log(e,'后端返回信息,格式可以和后端协商'); const data = JSON.parse(e.data) || { };//这里后端返回的是字符串所以目前我这边有转换 }; /* * error:错误(可能是断开,可能是后端返回的信息) */ eventSource.onerror = function (e) { console.log(e, "连接无法打开时触发"); eventSource.close(); // 关闭连接 setTimeout(() => { }, 5000); }; // 需要关闭了 // eventSource.close();
上一篇: 「打造个人网盘」教你一招使用Net2FTP即可搭建免费web文件管理器
下一篇: 前端常见的时间转换方法,获取当前时间方法
本文标签
前端怎么用 EventSource? EventSource怎么配置请求头及加参数? EventSourcePolyfill使用方法
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。