diff --git a/src/apis/slave/index.ts b/src/apis/slave/index.ts new file mode 100644 index 0000000..85e5551 --- /dev/null +++ b/src/apis/slave/index.ts @@ -0,0 +1,5 @@ +import { router } from './router.js'; + +const apiRouters = [...router]; + +export default apiRouters; diff --git a/src/apis/slave/router.ts b/src/apis/slave/router.ts new file mode 100644 index 0000000..d8722f6 --- /dev/null +++ b/src/apis/slave/router.ts @@ -0,0 +1,12 @@ +import { MediasoupRouterService } from '../../services/index.js'; +import { RouteConfig } from '../../utils/index.js'; + +export const router: Array = [ + { + method: 'POST', + url: '/routers', + handler: () => { + return new MediasoupRouterService().create(); + }, + }, +]; diff --git a/src/entities/mediasoup.room.ts b/src/entities/mediasoup.room.ts index 714a9d7..62fd4a2 100644 --- a/src/entities/mediasoup.room.ts +++ b/src/entities/mediasoup.room.ts @@ -4,6 +4,7 @@ import { BaseEntity, CreateDateColumn, Column, + Index, } from 'typeorm'; @Entity() @@ -11,6 +12,10 @@ export class MediasoupRoom extends BaseEntity { @PrimaryGeneratedColumn('uuid') id!: string; + @Index() + @Column('integer') + slaveId!: number; + @Column('text') routerId!: string; diff --git a/src/run_slave.ts b/src/run_slave.ts index 5115d78..4719ca4 100644 --- a/src/run_slave.ts +++ b/src/run_slave.ts @@ -1,5 +1,6 @@ import 'node-fetch'; +import apiRouters from './apis/slave/index.js'; import { MediasoupSlaveService, mediasoupWorkerManager, @@ -7,7 +8,7 @@ import { import { startServer, getDataSource } from './utils/index.js'; async function bootstrap() { - await startServer([]); + await startServer(apiRouters); try { await mediasoupWorkerManager.init(); await new MediasoupSlaveService(getDataSource()).addFromEnv(); diff --git a/src/services/index.ts b/src/services/index.ts index 977b098..b8af3cf 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -1,3 +1,4 @@ export * from './mediasoup.slave.js'; export * from './mediasoup.room.js'; export * from './mediasoup.worker.js'; +export * from './mediasoup.router.js'; diff --git a/src/services/mediasoup.room.ts b/src/services/mediasoup.room.ts index 40a3c40..2e04ba9 100644 --- a/src/services/mediasoup.room.ts +++ b/src/services/mediasoup.room.ts @@ -2,6 +2,8 @@ import { MediasoupRoom } from '../entities/index.js'; import { BaseService } from './base.js'; import { MediasoupSlaveService } from './mediasoup.slave.js'; +// for master server + export class MediasoupRoomService extends BaseService { async create(data: { metadata?: any }) { const slave = await this.createService(