diff options
author | metamuffin <metamuffin@disroot.org> | 2022-10-03 12:45:24 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-10-03 12:45:24 +0200 |
commit | 4d57f2dc4979177f9d074157b0d0767327d5fd67 (patch) | |
tree | 18f972626b4586b92f04a7805b3fb0d7d70cba95 /client-web/source/user | |
parent | d8315a650e3a272d3e57408790bfd879a868c3e1 (diff) | |
download | keks-meet-4d57f2dc4979177f9d074157b0d0767327d5fd67.tar keks-meet-4d57f2dc4979177f9d074157b0d0767327d5fd67.tar.bz2 keks-meet-4d57f2dc4979177f9d074157b0d0767327d5fd67.tar.zst |
first code for file transfer
Diffstat (limited to 'client-web/source/user')
-rw-r--r-- | client-web/source/user/remote.ts | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/client-web/source/user/remote.ts b/client-web/source/user/remote.ts index 677d362..e143625 100644 --- a/client-web/source/user/remote.ts +++ b/client-web/source/user/remote.ts @@ -45,10 +45,19 @@ export class RemoteUser extends User { r.on_enable(new TrackHandle(t), () => { this.request_resource_stop(r) }) - // 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() } + this.pc.ondatachannel = ({ channel }) => { + const id = channel.label + const r = this.resources.get(id) + if (!r) { channel.close(); return log({ scope: "media", warn: true }, "got an unassociated channel") } + r.on_enable(channel, () => { + this.request_resource_stop(r) + }) + log("media", `remote channel: ${this.display_name}`, channel) + this.update_stats() + } this.pc.onnegotiationneeded = () => { log("webrtc", `negotiation needed: ${this.display_name}`) if (this.negotiation_busy && this.pc.signalingState == "stable") return @@ -97,7 +106,7 @@ export class RemoteUser extends User { if (message.request) { const r = this.room.local_user.resources.get(message.request.id) if (!r) return log({ scope: "*", warn: true }, "somebody requested an unknown resource") - const channel = r.on_request(this, label => this.pc.createDataChannel(label)) + const channel = r.on_request(this, () => this.pc.createDataChannel(r.info.id)) if (channel instanceof TrackHandle) { const sender = this.pc.addTrack(channel.track, channel.stream) this.senders.set(channel.id, sender) |