From 25e9f16af004caa42a998ff31caece69ce00bd96 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Thu, 23 Jan 2025 14:41:09 +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 --- src/page/Meeting/ShareScreenWindow/index.tsx | 80 +++++++++++++++++++- src/page/Meeting/index.tsx | 57 ++++++++++++++ 2 files changed, 134 insertions(+), 3 deletions(-) diff --git a/src/page/Meeting/ShareScreenWindow/index.tsx b/src/page/Meeting/ShareScreenWindow/index.tsx index 772f6b2..25984a4 100644 --- a/src/page/Meeting/ShareScreenWindow/index.tsx +++ b/src/page/Meeting/ShareScreenWindow/index.tsx @@ -4,6 +4,7 @@ import styles from '@/page/Meeting/ShareScreenWindow/index.module.scss' import { storage } from '@/utils'; import ImageUrl from '@/utils/package/imageUrl'; import { CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons'; +import { RtcStats } from 'agora-electron-sdk'; import { Button } from 'antd'; import dayjs from 'dayjs'; import { useEffect, useState } from "react"; @@ -50,6 +51,12 @@ const ShareScreenWindow: React.FC = () => { const [timeStr, setTimeStr] = useState(0) const [isExpand, setIsExpand] = useState(false) const [roomUserLists, setRoomUserLists] = useState([]) + const [currentEffective, setCurrentEffective] = useState(3) + const [networkOther, setNetworkOther] = useState({}) + const [networkQuality, setNetworkQuality] = useState({ + level: '佳', + text: '网络质量极好' + }) const channel = new BroadcastChannel('meeting_channel'); const userInfo = JSON.parse(storage.getItem('user') as string) let timeout: NodeJS.Timeout; @@ -97,6 +104,11 @@ const ShareScreenWindow: React.FC = () => { case 'roomUserList': setRoomUserLists(data.parmes.roomUserList) break; + case 'nnetworkStatus': + setCurrentEffective(data.parmes.currentEffective) + setNetworkQuality(data.parmes.networkQuality) + setNetworkOther(data.parmes.networkOther) + break; } }) return () => { @@ -141,13 +153,19 @@ const ShareScreenWindow: React.FC = () => { <>
- {changeCurrentSeconds(timeStr)} 共享中 - {isExpand ? { + {changeCurrentSeconds(timeStr)} 共享中 + {networkIcon(currentEffective)} + + 网络质量:{networkQuality.level} + 延迟:{networkOther.lastmileDelay}ms + + + {isExpand ? { channel.postMessage({ type: 'shareScreenWindowClose', shareScreenWindowClose: timeStr }); - }}>结束共享 : 结束共享} + }}>结束共享 : 结束共享}
{isExpand ? null :
@@ -217,4 +235,60 @@ const ShareScreenWindow: React.FC = () => { ) } +const networkIcon = (network: number) => { + switch (network) { + case 0: + return + + + + + + + + + + + case 1: + return + + + + + + + + + + + + case 2: + return + + + + + + + + + + + + case 3: + return + + + + + + + + + + + + } +} + export default ShareScreenWindow diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index c53062d..278e590 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -530,6 +530,20 @@ const Meeting: React.FC = () => { text: '网络质量极好' }) setCurrentEffective(3) + window.electron.windowHandleMessage({ + key: 'shareScreenWindow', + parmes: { + currentEffective: 3, + networkQuality: { + level: '佳', + text: '网络质量极好' + }, + networkOther: { + lastmileDelay: data.lastmileDelay + }, + type: 'nnetworkStatus' + } + }) } else if (data.lastmileDelay > 500) { setNetworkQuality({ level: '非常差', @@ -537,6 +551,20 @@ const Meeting: React.FC = () => { }) setIsNetworkQuality(true) setCurrentEffective(1) + window.electron.windowHandleMessage({ + key: 'shareScreenWindow', + parmes: { + currentEffective: 1, + networkQuality: { + level: '非常差', + text: '完全无法沟通' + }, + networkOther: { + lastmileDelay: data.lastmileDelay + }, + type: 'nnetworkStatus' + } + }) } else if (data.lastmileDelay < 500 && data.lastmileDelay > 100) { setNetworkQuality({ level: '差', @@ -544,6 +572,20 @@ const Meeting: React.FC = () => { }) setIsNetworkQuality(true) setCurrentEffective(2) + window.electron.windowHandleMessage({ + key: 'shareScreenWindow', + parmes: { + currentEffective: 2, + networkQuality: { + level: '差', + text: '勉强能沟通但不顺畅' + }, + networkOther: { + lastmileDelay: data.lastmileDelay + }, + type: 'nnetworkStatus' + } + }) } } else { setNetworkQuality({ @@ -551,6 +593,21 @@ const Meeting: React.FC = () => { text: '网络连接断开' }) setCurrentEffective(0) + window.electron.windowHandleMessage({ + key: 'shareScreenWindow', + parmes: { + currentEffective: 0, + networkQuality: { + level: '断开连接', + text: '网络连接断开' + }, + networkOther: { + lastmileDelay: data.lastmileDelay + }, + type: 'nnetworkStatus' + } + }) + } } }, [networkOther]);