diff options
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() } |