diff --git a/src/apis/master/room.ts b/src/apis/master/room.ts index c1f0db2..2dc0e5c 100644 --- a/src/apis/master/room.ts +++ b/src/apis/master/room.ts @@ -1,4 +1,4 @@ -import { MediasoupRoomService } from '../../services/index.js'; +import { RoomService } from '../../services/index.js'; import { RouteConfig, getDataSource } from '../../utils/index.js'; export const room: Array = [ @@ -6,7 +6,7 @@ export const room: Array = [ method: 'POST', url: '/rooms', handler: () => { - return new MediasoupRoomService(getDataSource()).create({}); + return new RoomService(getDataSource()).create({}); }, }, ]; diff --git a/src/apis/slave/router.ts b/src/apis/slave/router.ts index 258a8ca..9301f7b 100644 --- a/src/apis/slave/router.ts +++ b/src/apis/slave/router.ts @@ -1,4 +1,7 @@ -import { mediasoupRouterManager } from '../../services/index.js'; +import { + mediasoupRouterManager, + mediasoupWebRTCTransportManager, +} from '../../services/index.js'; import { RouteConfig } from '../../utils/index.js'; export const router: Array = [ @@ -9,4 +12,11 @@ export const router: Array = [ return mediasoupRouterManager.create(); }, }, + { + method: 'POST', + url: '/routers/:routerId/transports', + handler: (data) => { + return mediasoupWebRTCTransportManager.create(data.routerId); + }, + }, ]; diff --git a/src/services/index.ts b/src/services/index.ts index b8af3cf..c0272eb 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -1,4 +1,3 @@ -export * from './mediasoup.slave.js'; -export * from './mediasoup.room.js'; -export * from './mediasoup.worker.js'; -export * from './mediasoup.router.js'; +export * from './slave.js'; +export * from './room.js'; +export * from './mediasoup/index.js'; diff --git a/src/services/mediasoup/index.ts b/src/services/mediasoup/index.ts new file mode 100644 index 0000000..f085dbe --- /dev/null +++ b/src/services/mediasoup/index.ts @@ -0,0 +1,3 @@ +export * from './worker.js'; +export * from './router.js'; +export * from './webrtc.transport.js'; diff --git a/src/services/mediasoup.router.ts b/src/services/mediasoup/router.ts similarity index 91% rename from src/services/mediasoup.router.ts rename to src/services/mediasoup/router.ts index bc520b4..f659d5d 100644 --- a/src/services/mediasoup.router.ts +++ b/src/services/mediasoup/router.ts @@ -1,5 +1,5 @@ import { types } from 'mediasoup'; -import { mediasoupWorkerManager } from './mediasoup.worker.js'; +import { mediasoupWorkerManager } from './worker.js'; class MediasoupRouterManager { static routers: Array = []; diff --git a/src/services/webrtc.transport.ts b/src/services/mediasoup/webrtc.transport.ts similarity index 80% rename from src/services/webrtc.transport.ts rename to src/services/mediasoup/webrtc.transport.ts index faa12b4..50632df 100644 --- a/src/services/webrtc.transport.ts +++ b/src/services/mediasoup/webrtc.transport.ts @@ -1,8 +1,8 @@ import { types } from 'mediasoup'; -import { ServiceError } from './base.js'; -import { mediasoupRouterManager } from './mediasoup.router.js'; +import { ServiceError } from '../base.js'; +import { mediasoupRouterManager } from './router.js'; -class WebRTCTransportManager { +class MediasoupWebRTCTransportManager { static transports: Array = []; async create(routerId: string) { @@ -31,7 +31,7 @@ class WebRTCTransportManager { await transport.setMaxIncomingBitrate(maxIncomingBitrate); } catch (error) {} } - WebRTCTransportManager.transports.push(transport); + MediasoupWebRTCTransportManager.transports.push(transport); return { id: transport.id, iceParameters: transport.iceParameters, @@ -43,4 +43,5 @@ class WebRTCTransportManager { } } -export const webRTCTransportManager = new WebRTCTransportManager(); +export const mediasoupWebRTCTransportManager = + new MediasoupWebRTCTransportManager(); diff --git a/src/services/mediasoup.worker.ts b/src/services/mediasoup/worker.ts similarity index 100% rename from src/services/mediasoup.worker.ts rename to src/services/mediasoup/worker.ts diff --git a/src/services/mediasoup.room.ts b/src/services/room.ts similarity index 72% rename from src/services/mediasoup.room.ts rename to src/services/room.ts index 4b2c82d..d06b21c 100644 --- a/src/services/mediasoup.room.ts +++ b/src/services/room.ts @@ -1,14 +1,12 @@ import { MediasoupRoom } from '../entities/index.js'; import { fetchApi } from '../utils/index.js'; import { ServiceError, BaseService } from './base.js'; -import { MediasoupSlaveService } from './mediasoup.slave.js'; +import { SlaveService } from './slave.js'; -export class MediasoupRoomService extends BaseService { +export class RoomService extends BaseService { // for master server async create(data: { metadata?: any }) { - const slave = await this.createService( - MediasoupSlaveService - ).getForNewRoom(); + const slave = await this.createService(SlaveService).getForNewRoom(); if (slave) { const result = await fetchApi({ host: slave.externalHost, @@ -26,11 +24,17 @@ export class MediasoupRoomService extends BaseService { throw new ServiceError(404, 'Slave not found'); } + async get(data: { id: string }) { + return this.dataSource + .getRepository(MediasoupRoom) + .findOne({ where: { id: data.id } }); + } + /** * Remove all rooms of current slave */ async removeAll() { - const slave = await this.createService(MediasoupSlaveService).getCurrent(); + const slave = await this.createService(SlaveService).getCurrent(); if (slave) { await this.dataSource .createQueryBuilder(MediasoupRoom, 'MediasoupRoom') diff --git a/src/services/mediasoup.slave.ts b/src/services/slave.ts similarity index 96% rename from src/services/mediasoup.slave.ts rename to src/services/slave.ts index 2ff20e0..223ef0e 100644 --- a/src/services/mediasoup.slave.ts +++ b/src/services/slave.ts @@ -2,7 +2,7 @@ import { constants } from '../constants.js'; import { MediasoupSlave } from '../entities/index.js'; import { BaseService } from './base.js'; -export class MediasoupSlaveService extends BaseService { +export class SlaveService extends BaseService { async add(data: { internalHost: string; externalHost: string;