This commit is contained in:
parent
067c9a1042
commit
23f6ea5ba8
|
|
@ -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() {
|
||||
|
||||
},
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<t-icon name="fullscreen-2" size="24rpx" data-name="fullscreen-2" wx:else />
|
||||
</view>
|
||||
<view class="meeting-content-video-canvas" wx:if="{{currentUser.shareSrc}}">
|
||||
<live-player id="player" src="{{currentUser.shareSrc}}" mode="RTC" autoplay="true" bindstatechange="playerStateChange" object-fit="contain" />
|
||||
<live-player id="player" src="{{currentUser.shareSrc}}" mode="RTC" autoplay="true" bindstatechange="playerStateChange" object-fit="contain"/>
|
||||
</view>
|
||||
<view class="meeting-content-video-canvas" wx:elif="{{currentUser.src && currentUser.enableCamera}}">
|
||||
<live-player id="player" src="{{currentUser.src}}" mode="RTC" autoplay="true" bindstatechange="playerStateChange" object-fit="contain" muted="{{currentUser.uid === user.uid}}" />
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="meeting-content-smallvideo-box-view-canvas" wx:if="{{item.src}}">
|
||||
<live-pusher wx:if="{{user.uid === item.uid}}" url="{{item.src}}" mode="RTC" object-fit="contain" bindstatechange="recorderStateChange" background-mute enable-mic="{{footerList[1].active}}" enable-camera max-bitrate="500" min-bitrate="200" autopush enable-agc enable-ans device-position="front" class="meeting-content-smallvideo-box-view-canvas-play" data-uid="{{item.uid}}" bindaudiovolumenotify="playerAudioVolumenotify" beauty='{{9}}' whiteness='{{9}}' />
|
||||
<live-pusher wx:if="{{user.uid === item.uid}}" url="{{item.src}}" mode="RTC" object-fit="contain" bindstatechange="recorderStateChange" background-mute enable-mic="{{footerList[1].active}}" enable-camera max-bitrate="500" min-bitrate="200" autopush enable-agc enable-ans device-position="front" class="meeting-content-smallvideo-box-view-canvas-play" data-uid="{{item.uid}}" bindaudiovolumenotify="playerAudioVolumenotify" beauty='{{9}}' whiteness='{{9}}' />
|
||||
<live-player src="{{item.src}}" class="meeting-content-smallvideo-box-view-canvas-play" mode="RTC" autoplay="true" bindstatechange="playerStateChange" object-fit="contain" data-uid="{{item.uid}}" bindaudiovolumenotify="playerAudioVolumenotify" wx:else />
|
||||
</view>
|
||||
<view class="meeting-content-smallvideo-box-view-user">
|
||||
|
|
@ -134,4 +134,5 @@
|
|||
<view class="chat-popup-input-submit" bind:tap="sendMeg">发送</view>
|
||||
</view>
|
||||
</view>
|
||||
</t-popup>
|
||||
</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}}" />
|
||||
|
|
@ -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}`
|
||||
|
|
|
|||
Loading…
Reference in New Issue