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}`