js
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
);
}