aboutsummaryrefslogtreecommitdiff
path: root/client-web/source/protocol/mod.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client-web/source/protocol/mod.ts')
-rw-r--r--client-web/source/protocol/mod.ts15
1 files changed, 13 insertions, 2 deletions
diff --git a/client-web/source/protocol/mod.ts b/client-web/source/protocol/mod.ts
index 76b1290..f86e96f 100644
--- a/client-web/source/protocol/mod.ts
+++ b/client-web/source/protocol/mod.ts
@@ -1,6 +1,17 @@
+import { crypto_seeded_key } from "./crypto.ts"
export class SignalingConnection {
- constructor(room: string) {
-
+ room!: string
+ websocket!: WebSocket
+ signaling_id!: string
+ key!: CryptoKey
+
+ constructor() { }
+ async connect(room: string): Promise<SignalingConnection> {
+ this.key = await crypto_seeded_key(room)
+ const ws_url = new URL(`${window.location.protocol.endsWith("s:") ? "wss" : "ws"}://${window.location.host}/signaling/${encodeURIComponent(this.signaling_id)}`)
+ this.websocket = new WebSocket(ws_url)
+ await new Promise(r => this.websocket!.onopen = r)
+ return this
}
}