我在快速服务器应用程序中使用 mediasoap 和 typescript,这Broadcast
是我定义的类型,它具有类型属性Router
(在 mediasoup 模块中定义的类),问题是:
在创建广播实例时,没有创建路由器正确,这就是为什么:
- 我无法在控制台中记录创建的对象(
console.log
输出[object Object]
:) - 路由器对象中有一个数组作为第三级嵌套属性,称为
codecs
,这非常重要,并且在创建时不会设置。
但是当我单独创建路由器对象时,它工作得很好!即使我为路由器创建了一个空值的广播对象,然后使用单独创建的正常工作的路由器对象设置路由器属性,它再次停止正常运行
广播类:
import { types } from "mediasoup";
export class Broadcast {
Id: string;
Title: string;
Router: types.Router;
Streamer: Streamer;
Participants: Array<Participant>;
}
这是一个演示问题的场景
广播服务类:
export class BroadcastService {
_streamerService: StreamerService;
constructor() {
this._streamerService = new StreamerService();
}
async CreateBroadcast(title: string, streamer: Streamer): Promise<Broadcast> {
var broadcast: Broadcast = {
Title: title,
Id: uuidv4(),
Streamer: this._streamerService.CreateStreamer(streamer.Id),
Router: null,
Participants: new Array<Participant>()
};
return broadcast;
}
}
分离实例化:
var broadcast = await broadcastService.CreateBroadcast();
console.log(broadcast.Router); // null due to Broadcast constructor
var mediaCodecs = config.router.mediaCodecs;
var router = await this.Worker.createRouter({ mediaCodecs });
console.log(router.rtpCapabilities.codecs); // logs the correct codecs
broadcast.Router = router;
console.log(broadcast.Router.rtpCapabilities.codecs); // result: [object Object],[object Object],[object Object]