网络优化
This commit is contained in:
parent
ef932fd3a8
commit
b689d21737
17
src/App.tsx
17
src/App.tsx
|
|
@ -57,8 +57,6 @@ const App: React.FC = () => {
|
||||||
toSrc('/login')
|
toSrc('/login')
|
||||||
}
|
}
|
||||||
window.addEventListener('resize', handleResize);
|
window.addEventListener('resize', handleResize);
|
||||||
window.addEventListener('online', handleNetworkChange);
|
|
||||||
window.addEventListener('offline', handleNetworkChange);
|
|
||||||
const originalSetItem = window.localStorage.setItem;
|
const originalSetItem = window.localStorage.setItem;
|
||||||
window.localStorage.setItem = function (key, value) {
|
window.localStorage.setItem = function (key, value) {
|
||||||
originalSetItem.call(this, key, value);
|
originalSetItem.call(this, key, value);
|
||||||
|
|
@ -71,8 +69,6 @@ const App: React.FC = () => {
|
||||||
return () => {
|
return () => {
|
||||||
window.removeEventListener('resize', handleResize);
|
window.removeEventListener('resize', handleResize);
|
||||||
window.removeEventListener('customStorageChange', handleCustomStorageChange);
|
window.removeEventListener('customStorageChange', handleCustomStorageChange);
|
||||||
window.removeEventListener('online', handleNetworkChange);
|
|
||||||
window.removeEventListener('offline', handleNetworkChange);
|
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -238,19 +234,6 @@ const App: React.FC = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleNetworkChange = (): void => {
|
|
||||||
if (location.hash.indexOf('/meeting') === -1) {
|
|
||||||
if (navigator.onLine) {
|
|
||||||
message.success('网络已恢复。')
|
|
||||||
setTimeout(async () => {
|
|
||||||
await onStart()
|
|
||||||
}, 1000)
|
|
||||||
} else {
|
|
||||||
message.error('网络已断开!')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Routes>
|
<Routes>
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ import { storage } from '@/utils';
|
||||||
import { GetRoomUser, PostOpenMicr, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, PostMuteAll, GetRoomUserItem, GetApplySpeak } from '@/api/Meeting';
|
import { GetRoomUser, PostOpenMicr, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, PostMuteAll, GetRoomUserItem, GetApplySpeak } from '@/api/Meeting';
|
||||||
import ImageUrl from '@/utils/package/imageUrl'
|
import ImageUrl from '@/utils/package/imageUrl'
|
||||||
import { agora } from '@/utils/package/agora'
|
import { agora } from '@/utils/package/agora'
|
||||||
import { onInvoke, onSignalr, offSignalr, onStart } from '@/utils/package/signalr';
|
import { onInvoke, onSignalr, offSignalr } from '@/utils/package/signalr';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import durationPlugin from 'dayjs/plugin/duration';
|
import durationPlugin from 'dayjs/plugin/duration';
|
||||||
import { AudioVolumeInfo, QualityType, RtcConnection, RtcStats, UserOfflineReasonType, VideoSourceType, VideoStreamType } from 'agora-electron-sdk';
|
import { AudioVolumeInfo, ConnectionChangedReasonType, ConnectionStateType, QualityType, RtcConnection, RtcStats, UserOfflineReasonType, VideoSourceType, VideoStreamType } from 'agora-electron-sdk';
|
||||||
import Avatar from '@/components/Avatar';
|
import Avatar from '@/components/Avatar';
|
||||||
import SharedFilesModel from '@/components/SharedFilesModel';
|
import SharedFilesModel from '@/components/SharedFilesModel';
|
||||||
import StupWizard from '@/components/StupWizard';
|
import StupWizard from '@/components/StupWizard';
|
||||||
|
|
@ -203,8 +203,6 @@ const Meeting: React.FC = () => {
|
||||||
agoraInit()
|
agoraInit()
|
||||||
storage.setItem('noViewChatList', 0)
|
storage.setItem('noViewChatList', 0)
|
||||||
window.addEventListener('customStorageChange', handleCustomStorageChange);
|
window.addEventListener('customStorageChange', handleCustomStorageChange);
|
||||||
window.addEventListener('online', handleNetworkChange);
|
|
||||||
window.addEventListener('offline', handleNetworkChange);
|
|
||||||
const container = document.getElementById('videoView') as HTMLElement;
|
const container = document.getElementById('videoView') as HTMLElement;
|
||||||
container.addEventListener('wheel', handleWheelChange);
|
container.addEventListener('wheel', handleWheelChange);
|
||||||
time = setInterval(() => {
|
time = setInterval(() => {
|
||||||
|
|
@ -229,8 +227,6 @@ const Meeting: React.FC = () => {
|
||||||
// }, 3000)
|
// }, 3000)
|
||||||
return () => {
|
return () => {
|
||||||
window.removeEventListener('customStorageChange', handleCustomStorageChange);
|
window.removeEventListener('customStorageChange', handleCustomStorageChange);
|
||||||
window.removeEventListener('online', handleNetworkChange);
|
|
||||||
window.removeEventListener('offline', handleNetworkChange);
|
|
||||||
window.removeEventListener('wheel', handleWheelChange);
|
window.removeEventListener('wheel', handleWheelChange);
|
||||||
clearInterval(time)
|
clearInterval(time)
|
||||||
// clearInterval(getDesktopCapturerVideoTime)
|
// clearInterval(getDesktopCapturerVideoTime)
|
||||||
|
|
@ -781,7 +777,12 @@ const Meeting: React.FC = () => {
|
||||||
...currentNetworkInfo,
|
...currentNetworkInfo,
|
||||||
networkOther: stats
|
networkOther: stats
|
||||||
})
|
})
|
||||||
}
|
},
|
||||||
|
onConnectionStateChanged: async (_connection: RtcConnection, stateNumber: ConnectionStateType, reason: ConnectionChangedReasonType) => {
|
||||||
|
if (stateNumber === 4 && reason === 2) {
|
||||||
|
message.error('网络断开,请检查网络')
|
||||||
|
}
|
||||||
|
},
|
||||||
})
|
})
|
||||||
if (state.enableCamera) {
|
if (state.enableCamera) {
|
||||||
await agora.startCameraCapture()
|
await agora.startCameraCapture()
|
||||||
|
|
@ -935,23 +936,6 @@ const Meeting: React.FC = () => {
|
||||||
}
|
}
|
||||||
changeAgoraDevice()
|
changeAgoraDevice()
|
||||||
}
|
}
|
||||||
// 网络
|
|
||||||
const handleNetworkChange = (): void => {
|
|
||||||
if (navigator.onLine) {
|
|
||||||
message.success('网络已恢复。')
|
|
||||||
setTimeout(async () => {
|
|
||||||
await onStart(async () => {
|
|
||||||
await onInvoke('joinChannel', {
|
|
||||||
roomNum: state.channelId,
|
|
||||||
enableMicr: !footerList[0][0].active,
|
|
||||||
enableCamera: !footerList[0][1].active
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}, 1000)
|
|
||||||
} else {
|
|
||||||
message.error('网络已断开!')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 滚动
|
// 滚动
|
||||||
const handleWheelChange = (e: any): void => {
|
const handleWheelChange = (e: any): void => {
|
||||||
const container = document.getElementById('videoView') as HTMLElement;
|
const container = document.getElementById('videoView') as HTMLElement;
|
||||||
|
|
@ -1333,6 +1317,12 @@ const Meeting: React.FC = () => {
|
||||||
enableMicr: !footerList[0][0].active,
|
enableMicr: !footerList[0][0].active,
|
||||||
enableCamera: !footerList[0][1].active
|
enableCamera: !footerList[0][1].active
|
||||||
})
|
})
|
||||||
|
message.success('网络已连接。')
|
||||||
|
DeleteRoomManager({
|
||||||
|
roomId: state.roomId,
|
||||||
|
roomNum: state.channelId,
|
||||||
|
userId: userInfo.uid
|
||||||
|
})
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,9 @@ import {
|
||||||
RtcConnection,
|
RtcConnection,
|
||||||
RtcStats,
|
RtcStats,
|
||||||
AudioVolumeInfo,
|
AudioVolumeInfo,
|
||||||
UserOfflineReasonType
|
UserOfflineReasonType,
|
||||||
|
ConnectionStateType,
|
||||||
|
ConnectionChangedReasonType
|
||||||
} from "agora-electron-sdk";
|
} from "agora-electron-sdk";
|
||||||
import { GetRoomRtcToken, GetAgoraConf } from "@/api/Home/Index";
|
import { GetRoomRtcToken, GetAgoraConf } from "@/api/Home/Index";
|
||||||
import { storage } from '@/utils';
|
import { storage } from '@/utils';
|
||||||
|
|
@ -109,7 +111,7 @@ export const agora = {
|
||||||
}, 1000);
|
}, 1000);
|
||||||
},
|
},
|
||||||
// 事件回调
|
// 事件回调
|
||||||
registerEventHandler: ({ onJoinChannelSuccess, onUserJoined, onUserOffline, onAudioVolumeIndication, onNetworkQuality, onRtcStats }: any) => {
|
registerEventHandler: ({ onJoinChannelSuccess, onUserJoined, onUserOffline, onAudioVolumeIndication, onNetworkQuality, onRtcStats, onConnectionStateChanged }: any) => {
|
||||||
rtcEngine.registerEventHandler({
|
rtcEngine.registerEventHandler({
|
||||||
// 监听本地用户加入频道事件
|
// 监听本地用户加入频道事件
|
||||||
onJoinChannelSuccess: async (connection: RtcConnection, elapsed: number) => {
|
onJoinChannelSuccess: async (connection: RtcConnection, elapsed: number) => {
|
||||||
|
|
@ -147,6 +149,10 @@ export const agora = {
|
||||||
onRtcStats: async (_connection: RtcConnection, stats: RtcStats) => {
|
onRtcStats: async (_connection: RtcConnection, stats: RtcStats) => {
|
||||||
await onRtcStats(stats)
|
await onRtcStats(stats)
|
||||||
},
|
},
|
||||||
|
// 网络连接状态已改变回调。
|
||||||
|
onConnectionStateChanged: async (connection: RtcConnection, state: ConnectionStateType, reason: ConnectionChangedReasonType) => {
|
||||||
|
await onConnectionStateChanged(connection, state, reason)
|
||||||
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 获取视图模式
|
// 获取视图模式
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,9 @@ export default defineConfig({
|
||||||
RtcConnection,
|
RtcConnection,
|
||||||
RtcStats,
|
RtcStats,
|
||||||
AudioVolumeInfo,
|
AudioVolumeInfo,
|
||||||
UserOfflineReasonType
|
UserOfflineReasonType,
|
||||||
|
ConnectionStateType,
|
||||||
|
ConnectionChangedReasonType
|
||||||
} = require("agora-electron-sdk")
|
} = require("agora-electron-sdk")
|
||||||
export {
|
export {
|
||||||
createAgoraRtcEngine,
|
createAgoraRtcEngine,
|
||||||
|
|
@ -85,7 +87,9 @@ export default defineConfig({
|
||||||
RtcConnection,
|
RtcConnection,
|
||||||
RtcStats,
|
RtcStats,
|
||||||
AudioVolumeInfo,
|
AudioVolumeInfo,
|
||||||
UserOfflineReasonType
|
UserOfflineReasonType,
|
||||||
|
ConnectionStateType,
|
||||||
|
ConnectionChangedReasonType
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue