summaryrefslogtreecommitdiff
path: root/client-web/source/user
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-10-03 12:45:24 +0200
committermetamuffin <metamuffin@disroot.org>2022-10-03 12:45:24 +0200
commit4d57f2dc4979177f9d074157b0d0767327d5fd67 (patch)
tree18f972626b4586b92f04a7805b3fb0d7d70cba95 /client-web/source/user
parentd8315a650e3a272d3e57408790bfd879a868c3e1 (diff)
downloadkeks-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.ts13
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)