diff options
| author | metamuffin <metamuffin@disroot.org> | 2022-09-09 13:03:48 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2022-09-09 13:03:48 +0200 | 
| commit | 0d4102fc2decaf2e1136bc55a261a9e85488791b (patch) | |
| tree | 4c0eaef68c2785b0fca903f78e89bcb643642d0a /client-web/source/remote_user.ts | |
| parent | e9aa676207be6e1b11863778deddba59109d88fb (diff) | |
| download | keks-meet-0d4102fc2decaf2e1136bc55a261a9e85488791b.tar keks-meet-0d4102fc2decaf2e1136bc55a261a9e85488791b.tar.bz2 keks-meet-0d4102fc2decaf2e1136bc55a261a9e85488791b.tar.zst  | |
move files
Diffstat (limited to 'client-web/source/remote_user.ts')
| -rw-r--r-- | client-web/source/remote_user.ts | 74 | 
1 files changed, 0 insertions, 74 deletions
diff --git a/client-web/source/remote_user.ts b/client-web/source/remote_user.ts deleted file mode 100644 index 5283a7b..0000000 --- a/client-web/source/remote_user.ts +++ /dev/null @@ -1,74 +0,0 @@ -/// <reference lib="dom" /> - -import { servers } from "./index.ts" -import { log } from "./logger.ts" -import { Room } from "./room.ts" -import { TrackHandle } from "./track_handle.ts"; -import { User } from "./user.ts" - -export class RemoteUser extends User { -    peer: RTCPeerConnection -    negotiation_busy = false - -    constructor(room: Room, id: number) { -        super(room, id) -        log("usermodel", `added remote user: ${id}`) -        this.peer = new RTCPeerConnection(servers) -        this.peer.onicecandidate = ev => { -            if (!ev.candidate) return -            room.signaling.send_relay({ ice_candidate: ev.candidate.toJSON() }, this.id) -        } -        this.peer.ontrack = ev => { -            const t = ev.track -            log("media", `remote track: ${this.name}`, t) -            this.add_track(new TrackHandle(t)) -        } -        this.peer.onnegotiationneeded = async () => { -            log("webrtc", `negotiation needed: ${this.name}`) -            while (this.negotiation_busy) { -                await new Promise<void>(r => setTimeout(() => r(), 100)) -            } -            this.offer() -        } -    } - -    async offer() { -        this.negotiation_busy = true -        const offer_description = await this.peer.createOffer() -        await this.peer.setLocalDescription(offer_description) -        const offer = { type: offer_description.type, sdp: offer_description.sdp } -        log("webrtc", `sent offer: ${this.name}`, { a: offer }) -        this.room.signaling.send_relay({ offer }, this.id) -    } -    async on_offer(offer: RTCSessionDescriptionInit) { -        this.negotiation_busy = true -        log("webrtc", `got offer: ${this.name}`, { a: offer }) -        const offer_description = new RTCSessionDescription(offer) -        await this.peer.setRemoteDescription(offer_description) -        this.answer() -    } -    async answer() { -        const answer_description = await this.peer.createAnswer() -        await this.peer.setLocalDescription(answer_description) -        const answer = { type: answer_description.type, sdp: answer_description.sdp } -        log("webrtc", `sent answer: ${this.name}`, { a: answer }) -        this.room.signaling.send_relay({ answer }, this.id) -        this.negotiation_busy = false -    } -    async on_answer(answer: RTCSessionDescriptionInit) { -        log("webrtc", `got answer: ${this.name}`, { a: answer }) -        const answer_description = new RTCSessionDescription(answer) -        await this.peer.setRemoteDescription(answer_description) -        this.negotiation_busy = false -    } - -    add_ice_candidate(candidate: RTCIceCandidateInit) { -        this.peer.addIceCandidate(new RTCIceCandidate(candidate)) -    } - -    leave() { -        log("usermodel", `remove remote user: ${this.name}`) -        this.peer.close() -        this.room.el.removeChild(this.el) -    } -}
\ No newline at end of file  |