Add WebRTC stats
This commit is contained in:
parent
fb5727ddbb
commit
dd3b4cc6be
2 changed files with 43 additions and 2 deletions
|
|
@ -106,7 +106,44 @@ export function GroupCallInspector({ client, groupCall, show }) {
|
||||||
client.on("hangup", onCallHangup);
|
client.on("hangup", onCallHangup);
|
||||||
client.on("toDeviceEvent", onToDeviceEvent);
|
client.on("toDeviceEvent", onToDeviceEvent);
|
||||||
|
|
||||||
|
let timeout;
|
||||||
|
|
||||||
|
async function updateCallStats() {
|
||||||
|
const callIds = groupCall.calls.map((call) => call.callId);
|
||||||
|
const stats = await Promise.all(
|
||||||
|
groupCall.calls.map((call) =>
|
||||||
|
call.peerConn
|
||||||
|
? call.peerConn
|
||||||
|
.getStats(null)
|
||||||
|
.then((stats) =>
|
||||||
|
Object.fromEntries(
|
||||||
|
Array.from(stats).map(([_id, report], i) => [
|
||||||
|
report.type + i,
|
||||||
|
report,
|
||||||
|
])
|
||||||
|
)
|
||||||
|
)
|
||||||
|
: Promise.resolve(null)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const callStats = {};
|
||||||
|
|
||||||
|
for (let i = 0; i < groupCall.calls.length; i++) {
|
||||||
|
callStats[callIds[i]] = stats[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
updateState({ callStats });
|
||||||
|
timeout = setTimeout(updateCallStats, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
updateCallStats();
|
||||||
|
|
||||||
onUpdateRoomState();
|
onUpdateRoomState();
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
};
|
||||||
}, [client, groupCall]);
|
}, [client, groupCall]);
|
||||||
|
|
||||||
const toDeviceEventsByCall = useMemo(() => {
|
const toDeviceEventsByCall = useMemo(() => {
|
||||||
|
|
@ -122,12 +159,12 @@ export function GroupCallInspector({ client, groupCall, show }) {
|
||||||
}, [toDeviceEvents]);
|
}, [toDeviceEvents]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Resizable enable={{ top: true }}>
|
<Resizable enable={{ top: true }} defaultSize={{ height: 200 }}>
|
||||||
{show && (
|
{show && (
|
||||||
<ReactJson
|
<ReactJson
|
||||||
theme="monokai"
|
theme="monokai"
|
||||||
src={{
|
src={{
|
||||||
state,
|
...state,
|
||||||
roomStateEvents,
|
roomStateEvents,
|
||||||
toDeviceEvents,
|
toDeviceEvents,
|
||||||
toDeviceEventsByCall,
|
toDeviceEventsByCall,
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,10 @@ export function Room({ client }) {
|
||||||
const roomId = maybeRoomId || hash;
|
const roomId = maybeRoomId || hash;
|
||||||
const { loading, error, groupCall } = useLoadGroupCall(client, roomId);
|
const { loading, error, groupCall } = useLoadGroupCall(client, roomId);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
window.groupCall = groupCall;
|
||||||
|
}, [groupCall]);
|
||||||
|
|
||||||
if (loading) {
|
if (loading) {
|
||||||
return (
|
return (
|
||||||
<div className={styles.room}>
|
<div className={styles.room}>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue