aboutsummaryrefslogtreecommitdiff
path: root/common/packets.d.ts
blob: 4c4f8b25dce15f0df1a1eb759ef57a4011a106f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// copy pasted from dom.lib.d.ts because it can not be referenced in the server.
type F_RTCSdpType = "answer" | "offer" | "pranswer" | "rollback";
interface F_RTCSessionDescriptionInit { sdp?: string; type: F_RTCSdpType; }
interface F_RTCIceCandidateInit { candidate?: string; sdpMLineIndex?: number | null; sdpMid?: string | null; usernameFragment?: string | null; }

export interface ClientboundPacket {
    init?: { your_id: number, version: string },
    client_join?: { id: number },
    client_leave?: { id: number },
    message?: { sender: number, message: string /* encrypted RelayMessageWrapper */ },
}

export interface ServerboundPacket {
    ping?: null,
    relay?: { recipient?: number, message: string /* encrypted RelayMessageWrapper */ },
}

export interface RelayMessageWrapper {
    sender: number, // redundant, but ensures the server didnt cheat
    inner: RelayMessage
}

export interface RelayMessage {
    chat?: ChatMessage,
    identify?: { username: string }
    offer?: F_RTCSessionDescriptionInit,
    answer?: F_RTCSessionDescriptionInit,
    ice_candidate?: F_RTCIceCandidateInit,
}
export interface ChatMessage { text?: string, image?: string }