-
Notifications
You must be signed in to change notification settings - Fork 0
/
handleEvents.js
36 lines (33 loc) · 1.15 KB
/
handleEvents.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { client } from "./client";
export function handleEvents() {
client.room.on("stream-added", ({ peerId, label }) => {
console.log(
"remote",
client.room.getRemotePeerById(peerId)?.getConsumer(label)?.track,
label
);
const container = document.querySelector("#remotePeers");
let mediaRef = document.createElement("video");
if (label == "audio") {
mediaRef = document.createElement("audio");
}
const remoteTrack = client.room
.getRemotePeerById(peerId)
?.getConsumer(label)?.track;
mediaRef.srcObject = new MediaStream([remoteTrack]);
mediaRef.id = `${peerId}-${label}`;
mediaRef.autoplay = true;
if (label == "video") {
mediaRef.muted = true;
}
mediaRef.className = "border-2 rounded-xl border-white-400 aspect-video";
container.appendChild(mediaRef);
});
client.room.on("stream-closed", ({ peerId, label }) => {
console.log("stream-closed", peerId, label);
const mediaRef = document.querySelector(`#${peerId}-${label}`);
mediaRef.srcObject.getTracks().forEach((track) => track.stop());
mediaRef.srcObject = null;
mediaRef.remove();
});
}