summaryrefslogtreecommitdiff
path: root/client-web/source/protocol/mod.ts
blob: f86e96f7a1cb16e10c5b7f5dc1d256575c3a042a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { crypto_seeded_key } from "./crypto.ts"

export class SignalingConnection {
    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
    }
}