关闭页面向后台发送消息

简介: 关闭页面向后台发送消息

场景描述


场景描述:在用户刷新页面或者关闭页面的时候,前端要给后台发一条请求,释放该页面的授权占用。


最初的代码


window.addEventListener("beforeunload", () => {
let oReq = new XMLHttpRequest();
oReq.open("POST", "http://127.0.0.1:8080/exit");
oReq.send(JSON.stringify({name: "南风晚来晚相识"}));


经过测试


刷新页面时基本满足需求(偶尔也会有后台接收不到请求的现象,但概率很低)

关闭页面时,后台接收不到请求


哦豁,尴尬了


navigator.sendBeacon()


navigator.sendBeacon()  这个方法主要用于满足统计和,


这些代码通常尝试在卸载(unload)文档之前向web服务器发送数据


使用方式: navigator.sendBeacon(url, data);


说明:


url 参数表明 data 将要被发送到的网络地址。


data 参数是将要发送的 ArrayBufferView 或 Blob 、DOMString 或者 FormData 类型的数


返回值


当用户代理成功把数据加入传输队列时,sendBeacon() 方法将会返回 true,否则返回 false


使用navigator.sendBeacon()


window.addEventListener("beforeunload", (e) => {
    const data = {name: "南风晚来晚相识"};
    window.navigator.sendBeacon("http://127.0.0.1:8080/exit", JSON.stringify(data));
});


相关文章
|
3天前
|
JSON JavaScript 前端开发
KOI 后台新的架构下,webshop如何消费后台服务 - websocket 初始化
KOI 后台新的架构下,webshop如何消费后台服务 - websocket 初始化
3 0
|
3天前
|
开发者
在用户关闭页面时,提示用户有内容未保存-论onbeforeunload事件的用法
在用户关闭页面时,提示用户有内容未保存-论onbeforeunload事件的用法
27 0
|
9月前
|
小程序 开发工具 开发者
微信小程序订阅消息点了 “总保持以上选择、全部拒绝,不在询问” 无法再次弹出
微信小程序订阅消息点了 “总保持以上选择、全部拒绝,不在询问” 无法再次弹出
1028 0
|
JSON 前端开发 JavaScript
前端重新部署如何通知用户刷新网页?
如果后端可以配合我们的话我们可以使用webSocket 跟后端进行实时通讯,前端部署完之后,后端给个通知,前端检测到Message进行提示,还可以在优化一下使用EvnentSource 这个跟socket很像只不过他只能后端往前端推送消息,前端无法给后端发送,我们也不需要给后端发送。
128 0
前端重新部署如何通知用户刷新网页?
PbootCMS自定义前台404错误页面
PbootCMS自定义前台404错误页面
674 0
PbootCMS自定义前台404错误页面
|
SQL Python
DjangoAdmin后台的一些设置
DjangoAdmin后台的一些设置
85 0
|
SQL 关系型数据库 MySQL
开启关闭服务器以及登录退出客户端 | 学习笔记
快速学习开启关闭服务器以及登录退出客户端。
184 1
开启关闭服务器以及登录退出客户端 | 学习笔记
|
Web App开发 监控 前端开发
Web Beacon 刷新/关闭页面之前发送请求
背景: 有一个任务非常耗时会消耗后台大量算力,所以在退出页面的时候,要求前端这边发送一个请求来杀死任务。 一开始以为这个需求非常简单,就是在进入其他路由前,发送一下请求,杀死一下任务就好了。 然而现实狠狠的打了我的脸,因为退出页面的场景不止切换路由~ 退出页面场景: 还在本网站,跳到其他路由 刷新页面/关闭页面也需要发送请求来杀死任务 还在本网站,跳到其他路由 这个比较简单,在Vue中可以通过路由离开的钩子beforeRouteLeave来实现: beforeRouteLeave(to, from, next) { if (任务运行中) { // 发送请求
245 0
Web Beacon 刷新/关闭页面之前发送请求
|
Web App开发 前端开发 API
你知道关闭页面时怎么向后台发送消息吗?
这两天碰到一个需求:在用户刷新页面或者关闭页面的时候,前端要给后台发一条请求,释放该页面的授权占用。
166 0
你知道关闭页面时怎么向后台发送消息吗?
|
Web App开发
Chrome 插件开发-主动获取所有页签的tabid,background.js直接向所有页签同步传递消息
Chrome 插件开发-主动获取所有页签的tabid,background.js直接向所有页签同步传递消息
645 0