From 4fc395823d28401a2631bb8ad788f06b980078ca Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Thu, 24 Jun 2021 08:51:39 +0200 Subject: [PATCH] :construction: init --- package-lock.json | Bin 0 -> 64587 bytes package.json | 25 +++++++++++++++++ src/Server.ts | 43 +++++++++++++++++++++++++++++ src/index.ts | 0 src/start.ts | 3 ++ src/test.ts | 8 ++++++ tsconfig.json | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 147 insertions(+) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/Server.ts create mode 100644 src/index.ts create mode 100644 src/start.ts create mode 100644 src/test.ts create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..bcc22d2493205a3c39c2a3c0e978d58a97e508d7 GIT binary patch literal 64587 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

f?v0 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 00000000..48a6d133 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "rtc", + "version": "1.0.0", + "description": "A javascript fosscord webrtc server for voice and video communication", + "main": "index.js", + "scripts": { + "test": "npm run build && node dist/test.js", + "build": "tsc -b .", + "start": "npm run build && node dist/start.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@types/node": "^15.6.1", + "@types/ws": "^7.4.4", + "typescript": "^4.3.2" + }, + "dependencies": { + "@fosscord/server-util": "^1.3.15", + "mediasoup": "^3.7.16", + "node-turn": "^0.0.6", + "ws": "^7.4.6" + } +} diff --git a/src/Server.ts b/src/Server.ts new file mode 100644 index 00000000..bb82e659 --- /dev/null +++ b/src/Server.ts @@ -0,0 +1,43 @@ +import { Server as WebSocketServer } from "ws"; +import { Config, db } from "@fosscord/server-util"; +import mediasoup from "mediasoup" + +var port = Number(process.env.PORT); +if (isNaN(port)) port = 3004; + +export class Server { + public ws: WebSocketServer; + public turn: any; + + constructor() { + this.ws = new WebSocketServer({ + port, + maxPayload: 4096, + }); + this.ws.on("connection", (socket) => { + socket.on("message", (message) => { + socket.emit( + JSON.stringify({ + op: 2, + d: { + ssrc: 1, + ip: "127.0.0.1", + port: 3004, + modes: ["xsalsa20_poly1305", "xsalsa20_poly1305_suffix", "xsalsa20_poly1305_lite"], + heartbeat_interval: 1, + }, + }) + ); + }); + }); + + } + + async listen(): Promise { + // @ts-ignore + await (db as Promise); + await Config.init(); + console.log("[DB] connected"); + console.log(`[WebRTC] online on 0.0.0.0:${port}`); + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/start.ts b/src/start.ts new file mode 100644 index 00000000..68867a2c --- /dev/null +++ b/src/start.ts @@ -0,0 +1,3 @@ +import { Server } from "./Server"; + +const server = new Server(); diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 00000000..df407b56 --- /dev/null +++ b/src/test.ts @@ -0,0 +1,8 @@ +import { getSupportedRtpCapabilities } from "mediasoup"; + +async function test() { + console.log(getSupportedRtpCapabilities()); +} +setTimeout(() => {}, 1000000); + +test(); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..6bf2e6b7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,68 @@ +{ + "include": ["src/**/*.ts"], + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "lib": ["ES2020"] /* Specify library files to be included in the compilation. */, + "allowJs": true /* Allow javascript files to be compiled. */, + "checkJs": true /* Report errors in .js files. */, + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": false /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist/" /* Redirect output structure to the directory. */, + "rootDir": "./src/" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, + "strictNullChecks": true /* Enable strict null checks. */, + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + "strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */, + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + "alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */, + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + "types": ["node"] /* Type declaration files to be included in compilation. */, + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + } +}