diff options
author | Madeline <46743919+MaddyUnderStars@users.noreply.github.com> | 2022-09-25 18:24:21 +1000 |
---|---|---|
committer | Madeline <46743919+MaddyUnderStars@users.noreply.github.com> | 2022-09-25 23:35:18 +1000 |
commit | f44f5d7ac2d24ff836c2e1d4b2fa58da04b13052 (patch) | |
tree | a6655c41bb3db79c30fd876b06ee60fe9cf70c9b /src/webrtc/Server.ts | |
parent | Allow edited_timestamp to passthrough in handleMessage (diff) | |
download | server-f44f5d7ac2d24ff836c2e1d4b2fa58da04b13052.tar.xz |
Refactor to mono-repo + upgrade packages
Diffstat (limited to 'src/webrtc/Server.ts')
-rw-r--r-- | src/webrtc/Server.ts | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/webrtc/Server.ts b/src/webrtc/Server.ts new file mode 100644 index 00000000..32b795ea --- /dev/null +++ b/src/webrtc/Server.ts @@ -0,0 +1,56 @@ +import { closeDatabase, Config, initDatabase, initEvent } from "@fosscord/util"; +import dotenv from "dotenv"; +import http from "http"; +import ws from "ws"; +import { Connection } from "./events/Connection"; +dotenv.config(); + +export class Server { + public ws: ws.Server; + public port: number; + public server: http.Server; + public production: boolean; + + constructor({ port, server, production }: { port: number; server?: http.Server; production?: boolean }) { + this.port = port; + this.production = production || false; + + if (server) this.server = server; + else { + this.server = http.createServer(function (req, res) { + res.writeHead(200).end("Online"); + }); + } + + // this.server.on("upgrade", (request, socket, head) => { + // if (!request.url?.includes("voice")) return; + // this.ws.handleUpgrade(request, socket, head, (socket) => { + // // @ts-ignore + // socket.server = this; + // this.ws.emit("connection", socket, request); + // }); + // }); + + this.ws = new ws.Server({ + maxPayload: 1024 * 1024 * 100, + server: this.server, + }); + this.ws.on("connection", Connection); + this.ws.on("error", console.error); + } + + async start(): Promise<void> { + await initDatabase(); + await Config.init(); + await initEvent(); + if (!this.server.listening) { + this.server.listen(this.port); + console.log(`[WebRTC] online on 0.0.0.0:${this.port}`); + } + } + + async stop() { + closeDatabase(); + this.server.close(); + } +} \ No newline at end of file |