summaryrefslogtreecommitdiff
path: root/client-web/source/user
diff options
context:
space:
mode:
Diffstat (limited to 'client-web/source/user')
-rw-r--r--client-web/source/user/local.ts28
-rw-r--r--client-web/source/user/remote.ts8
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()
}