This commit is contained in:
yj 2025-02-13 15:37:26 +08:00
parent 067c9a1042
commit 23f6ea5ba8
3 changed files with 107 additions and 27 deletions

View File

@ -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()
}
wx.hideLoading()
Message.success({
context: this,
offset: [20, 32],
duration: 3000,
content: bool ? '重连成功' : '重连失败,请退出房间重试!',
content: '重连成功',
});
this.setData({
isReconnecTime: false,
isReconnec: false
})
} else {
this.setData({
isReconnec: true
})
}
wx.hideLoading()
})
} 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() {
},

View File

@ -135,3 +135,4 @@
</view>
</view>
</t-popup>
<t-dialog visible="{{isReconnec}}" content="重连失败,请退出重试!" confirm-btn="{{ { content: '确定', variant: 'base', theme: 'primary' } }}" data-type="isReconnec" cancel-btn="{{null}}" bind:confirm="closeRoom" style="transform: scale(0.5) translate3d(-50%, -50%, 0);" close-btn="{{false}}" />

View File

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