diff options
author | metamuffin <metamuffin@disroot.org> | 2022-09-16 21:20:52 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-09-16 21:20:52 +0200 |
commit | 52b7bf7a052d2da6c71db7695dde73716cb0e4e5 (patch) | |
tree | bd582773a2d60e54286c450bc9595b398d76582d /client-web/source/user | |
parent | a3cc9f8fb1bf45741b08ce6d383c4d7cc8ea8b1f (diff) | |
download | keks-meet-52b7bf7a052d2da6c71db7695dde73716cb0e4e5.tar keks-meet-52b7bf7a052d2da6c71db7695dde73716cb0e4e5.tar.bz2 keks-meet-52b7bf7a052d2da6c71db7695dde73716cb0e4e5.tar.zst |
optional streams (3, less bugs)
Diffstat (limited to 'client-web/source/user')
-rw-r--r-- | client-web/source/user/local.ts | 28 | ||||
-rw-r--r-- | client-web/source/user/remote.ts | 8 |
2 files changed, 18 insertions, 18 deletions
diff --git a/client-web/source/user/local.ts b/client-web/source/user/local.ts index e5d22e5..571295d 100644 --- a/client-web/source/user/local.ts +++ b/client-web/source/user/local.ts @@ -31,19 +31,19 @@ export class LocalUser extends User { } provide_initial_to_remote(u: RemoteUser) { - this.resources.forEach(t => { - if (t instanceof TrackResource && t.track) - u.peer.addTrack(t.track.track) + this.resources.forEach(r => { + this.room.signaling.send_relay({ provide: r.info }, u.id) }) } + identify(recipient?: number) { if (this.name) this.room.signaling.send_relay({ identify: { username: this.name } }, recipient) } + chat(message: ChatMessage) { this.room.signaling.send_relay({ chat: message }) } - create_controls() { const mic_toggle = document.createElement("input") const camera_toggle = document.createElement("input") @@ -78,16 +78,16 @@ export class LocalUser extends User { } } - send_track(t: TrackHandle) { - this.room.remote_users.forEach(u => u.peer.addTrack(t.track)) - t.addEventListener("ended", () => { - this.room.remote_users.forEach(u => { - u.peer.getSenders().forEach(s => { - if (s.track == t.track) u.peer.removeTrack(s) - }) - }) - }) - } + // send_track(t: TrackHandle) { + // this.room.remote_users.forEach(u => u.peer.addTrack(t.track)) + // t.addEventListener("ended", () => { + // this.room.remote_users.forEach(u => { + // u.peer.getSenders().forEach(s => { + // if (s.track == t.track) u.peer.removeTrack(s) + // }) + // }) + // }) + // } async create_camera_res() { log("media", "requesting user media (camera)") diff --git a/client-web/source/user/remote.ts b/client-web/source/user/remote.ts index 59d811a..8921b04 100644 --- a/client-web/source/user/remote.ts +++ b/client-web/source/user/remote.ts @@ -33,12 +33,12 @@ export class RemoteUser extends User { this.peer.ontrack = ev => { console.log(ev) const t = ev.track - const id = ev.streams[0].id - if (!id) return log({ scope: "media", warn: true }, "got a track without stream") + const id = ev.streams[0]?.id + if (!id) { ev.transceiver.stop(); return log({ scope: "media", warn: true }, "got a track without stream") } const r = this.resources.get(id) - if (!r) return log({ scope: "media", warn: true }, "got an unassociated track") + if (!r) { ev.transceiver.stop(); return log({ scope: "media", warn: true }, "got an unassociated track") } if (r instanceof TrackResource) r.track = new TrackHandle(t); - else log({ scope: "media", warn: true }, "got a track for a resource that should use data channel") + else { ev.transceiver.stop(); return log({ scope: "media", warn: true }, "got a track for a resource that should use data channel") } log("media", `remote track: ${this.display_name}`, t) this.update_stats() } |