From 23f6ea5ba8507b013e085c936b9d99cdb78946e0 Mon Sep 17 00:00:00 2001
From: yj <1336058017@qq.com>
Date: Thu, 13 Feb 2025 15:37:26 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/meeting/index.ts | 125 ++++++++++++++++++++++++++++++++-------
pages/meeting/index.wxml | 7 ++-
utils/request.js | 2 +-
3 files changed, 107 insertions(+), 27 deletions(-)
diff --git a/pages/meeting/index.ts b/pages/meeting/index.ts
index a29939e..7303e19 100644
--- a/pages/meeting/index.ts
+++ b/pages/meeting/index.ts
@@ -8,6 +8,8 @@ import * as signalR from "signalr-for-wx";
import dayjs from 'dayjs';
const computedBehavior = require('miniprogram-computed').behavior;
let reconnectTime = "" as any;
+let refreshTime = "" as any;
+let isReconnecTimeSetTimeout = "" as any;
Page({
behaviors: [computedBehavior],
data: {
@@ -97,7 +99,9 @@ Page({
'我要发言',
],
isFirstShow: true,
- isCurrePage: false,
+ isCurrePage: true,
+ isReconnec: false,
+ isReconnecTime: false,
},
watch: {
'roomUserList.**': function (roomUserList) {
@@ -138,6 +142,50 @@ Page({
}, 10000);
}
},
+ 'isReconnecTime': function (isReconnecTime) {
+ if (isReconnecTime) {
+ isReconnecTimeSetTimeout = setTimeout(() => {
+ clearTimeout(isReconnecTimeSetTimeout)
+ this.setData({
+ isReconnec: true,
+ isReconnecTime: false,
+ })
+ isReconnecTimeSetTimeout = ''
+ wx.hideLoading()
+ }, 8000)
+ } else {
+ if (isReconnecTimeSetTimeout) {
+ clearTimeout(isReconnecTimeSetTimeout)
+ isReconnecTimeSetTimeout = ''
+ wx.hideLoading()
+ }
+ }
+ },
+ 'isCurrePage': function (isCurrePage) {
+ if (isCurrePage) {
+ if (refreshTime) {
+ clearInterval(refreshTime)
+ refreshTime = ''
+ }
+ } else {
+ refreshTime = setInterval(() => {
+ GetRoomUser(this.data.channelId).then(res => {
+ if (res.code === 200) {
+ res.data.forEach((item: any) => {
+ let row = this.data.roomUserList.find((row: any) => row.uid == item.uid);
+ if (row) {
+ row.enableCamera = item.enableCamera;
+ row.enableMicr = item.enableMicr;
+ row.isRoomManager = item.isRoomManager;
+ row.isAdmin = role.ID.includes(item.roleId) || item.isRoomManager;
+ }
+ });
+ this.changeAgoraDevice()
+ }
+ })
+ }, 1000 * 30)
+ }
+ },
'currentUid': function (currentUid) {
this.data.roomUserList.forEach(item => {
if (item.src) {
@@ -205,7 +253,7 @@ Page({
},
onShow() {
this.setData({
- isCurrePage: true
+ isCurrePage: false
})
if (this.data.isFirstShow) {
this.setData({
@@ -218,6 +266,9 @@ Page({
title: '重连中',
mask: true
})
+ this.setData({
+ isReconnecTime: true,
+ })
agora.destroy(() => {
reconnectTime = setInterval(() => {
if (getSignIr() === signalR.HubConnectionState.Connected) {
@@ -232,13 +283,21 @@ Page({
},
onHide() {
this.setData({
- isCurrePage: false
+ isCurrePage: true,
+ isReconnecTime: false
})
if (reconnectTime) {
clearInterval(reconnectTime)
reconnectTime = ''
}
- wx.hideLoading()
+ if (isReconnecTimeSetTimeout) {
+ clearInterval(isReconnecTimeSetTimeout)
+ isReconnecTimeSetTimeout = ''
+ }
+ if (refreshTime) {
+ clearInterval(refreshTime)
+ refreshTime = ''
+ }
},
onUnload() {
wx.offNetworkStatusChange(this.listener)
@@ -246,6 +305,14 @@ Page({
clearInterval(reconnectTime)
reconnectTime = ''
}
+ if (isReconnecTimeSetTimeout) {
+ clearInterval(isReconnecTimeSetTimeout)
+ isReconnecTimeSetTimeout = ''
+ }
+ if (refreshTime) {
+ clearInterval(refreshTime)
+ refreshTime = ''
+ }
},
async reconnecFun() {
offSignalr()
@@ -258,37 +325,39 @@ Page({
this.startSignalr()
await this.getRoomUser()
await this.getShowUser()
+ Message.success({
+ context: this,
+ offset: [20, 32],
+ duration: 3000,
+ content: '重连成功',
+ });
+ this.setData({
+ isReconnecTime: false,
+ isReconnec: false
+ })
+ } else {
+ this.setData({
+ isReconnec: true
+ })
}
wx.hideLoading()
- Message.success({
- context: this,
- offset: [20, 32],
- duration: 3000,
- content: bool ? '重连成功' : '重连失败,请退出房间重试!',
- });
})
} else {
wx.hideLoading()
- Message.error({
- context: this,
- offset: [20, 32],
- duration: 3000,
- content: '重连失败,请退出房间重试!',
- });
+ this.setData({
+ isReconnec: true
+ })
}
}).catch(() => {
wx.hideLoading()
- Message.error({
- context: this,
- offset: [20, 32],
- duration: 3000,
- content: '重连失败,请退出房间重试!',
- });
+ this.setData({
+ isReconnec: true
+ })
})
},
startSignalr() {
onSignalr(async (item) => {
- if (!this.data.isCurrePage) {
+ if (this.data.isCurrePage) {
return
}
const userInfo: any = await getStorage('user')
@@ -922,6 +991,16 @@ Page({
})
}
},
+ closeRoom() {
+ wx.disableAlertBeforeUnload({
+ complete: () => {
+ this.setData({
+ isReconnec: false
+ })
+ wx.navigateBack()
+ }
+ })
+ },
scroll() {
},
diff --git a/pages/meeting/index.wxml b/pages/meeting/index.wxml
index 06aa04e..42e0e75 100644
--- a/pages/meeting/index.wxml
+++ b/pages/meeting/index.wxml
@@ -16,7 +16,7 @@
-
+
@@ -38,7 +38,7 @@
-
+
@@ -134,4 +134,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/utils/request.js b/utils/request.js
index ad6c1f9..71ae3f2 100644
--- a/utils/request.js
+++ b/utils/request.js
@@ -38,7 +38,7 @@ function requestMethods(obj, callback) {
wx.request({
...obj.params,
url: apiBase + obj.params.url,
- timeout: 500,
+ timeout: 10000,
header: {
'content-type': 'application/json',
'Authorization': `Bearer ${obj.token}`