参考文章
- onBeforeUnmount(() => {
- unNormalExit();
- });
- //---------------------------异常退出----------------------
- function unNormalExit() {
- enterOrExitRoom({
- type: 37,
- roomId: roomId.value,
- userId: userId.value,
- nickName: name.value,
- loginUserType: 2, //0 专家 1员工 2第三方 app登录类型
- }).then(async (res) => {
- await trtc.exitRoom();
- await trtc.stopLocalVideo();
- await trtc.stopLocalAudio();
- // 若后续无需再使用该 trtc,则销毁 trtc,并释放引用。
- trtc.destroy();
- });
- closeWebSocketH5();
- }
- // 微信浏览器
- // ios 的 window.addEventListener("pagehide", function () {} 监听方法内,
- // 不支持 ajax,需要通过 navigator.sendBeacon("url",data) 来调后台接口。
- if (deviceType == "Android") {
- if (window.addEventListener) {
- document.addEventListener("visibilitychange", async function () {
- //部分手机可以获取到
- if (document.hidden) {
- //用户关闭了安卓页面
- //做关闭页面处理逻辑
- unNormalExit();
- }
- });
- } else if (window.attachEvent) {
- // 主要是为了兼容老的IE
- window.attachEvent("onpagehide", async function () {
- unNormalExit();
- });
- } else {
- window.onbeforeunload = async function () {
- unNormalExit();
- };
- }
- } else {
- //苹果:有时会执行closeWebSocket,有时不会,让后台监听心跳断开之后主动调用一次退出
- window.addEventListener(
- "pagehide",
- function () {
- closeWebSocketH5();
- unNormalExit();
- // let data = new Blob(
- // [JSON.stringify({ gameId: gameId, userId: userid })],
- // {
- // type: "application/json; charset=UTF-8",
- // }
- // );
- // navigator.sendBeacon("/destory", data);
- },
- false
- );
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |