summary refs log tree commit diff
path: root/src/webrtc/util
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-09-25 18:24:21 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-09-25 23:35:18 +1000
commitf44f5d7ac2d24ff836c2e1d4b2fa58da04b13052 (patch)
treea6655c41bb3db79c30fd876b06ee60fe9cf70c9b /src/webrtc/util
parentAllow edited_timestamp to passthrough in handleMessage (diff)
downloadserver-f44f5d7ac2d24ff836c2e1d4b2fa58da04b13052.tar.xz
Refactor to mono-repo + upgrade packages
Diffstat (limited to 'src/webrtc/util')
-rw-r--r--src/webrtc/util/Constants.ts26
-rw-r--r--src/webrtc/util/MediaServer.ts51
-rw-r--r--src/webrtc/util/index.ts2
3 files changed, 79 insertions, 0 deletions
diff --git a/src/webrtc/util/Constants.ts b/src/webrtc/util/Constants.ts
new file mode 100644

index 00000000..64d78e22 --- /dev/null +++ b/src/webrtc/util/Constants.ts
@@ -0,0 +1,26 @@ +export enum VoiceStatus { + CONNECTED = 0, + CONNECTING = 1, + AUTHENTICATING = 2, + RECONNECTING = 3, + DISCONNECTED = 4 +} + +export enum VoiceOPCodes { + IDENTIFY = 0, + SELECT_PROTOCOL = 1, + READY = 2, + HEARTBEAT = 3, + SELECT_PROTOCOL_ACK = 4, + SPEAKING = 5, + HEARTBEAT_ACK = 6, + RESUME = 7, + HELLO = 8, + RESUMED = 9, + VIDEO = 12, + CLIENT_DISCONNECT = 13, + SESSION_UPDATE = 14, + MEDIA_SINK_WANTS = 15, + VOICE_BACKEND_VERSION = 16, + CHANNEL_OPTIONS_UPDATE = 17 +} \ No newline at end of file diff --git a/src/webrtc/util/MediaServer.ts b/src/webrtc/util/MediaServer.ts new file mode 100644
index 00000000..93230c91 --- /dev/null +++ b/src/webrtc/util/MediaServer.ts
@@ -0,0 +1,51 @@ +import { WebSocket } from "@fosscord/gateway"; +import MediaServer, { IncomingStream, OutgoingStream, Transport } from "medooze-media-server"; +import SemanticSDP from "semantic-sdp"; +MediaServer.enableLog(true); + +export const PublicIP = process.env.PUBLIC_IP || "127.0.0.1"; + +try { + const range = process.env.WEBRTC_PORT_RANGE || "4000"; + var ports = range.split("-"); + const min = Number(ports[0]); + const max = Number(ports[1]); + + MediaServer.setPortRange(min, max); +} catch (error) { + console.error("Invalid env var: WEBRTC_PORT_RANGE", process.env.WEBRTC_PORT_RANGE, error); + process.exit(1); +} + +export const endpoint = MediaServer.createEndpoint(PublicIP); + +export const channels = new Map<string, Set<Client>>(); + +export interface Client { + transport?: Transport; + websocket: WebSocket; + out: { + stream?: OutgoingStream; + tracks: Map< + string, + { + audio_ssrc: number; + video_ssrc: number; + rtx_ssrc: number; + } + >; + }; + in: { + stream?: IncomingStream; + audio_ssrc: number; + video_ssrc: number; + rtx_ssrc: number; + }; + sdp: SemanticSDP.SDPInfo; + channel_id: string; +} + +export function getClients(channel_id: string) { + if (!channels.has(channel_id)) channels.set(channel_id, new Set()); + return channels.get(channel_id)!; +} \ No newline at end of file diff --git a/src/webrtc/util/index.ts b/src/webrtc/util/index.ts new file mode 100644
index 00000000..2e09bc48 --- /dev/null +++ b/src/webrtc/util/index.ts
@@ -0,0 +1,2 @@ +export * from "./Constants"; +export * from "./MediaServer"; \ No newline at end of file