feat(streams): add phase-2 SFU transport handshake and produce/consume APIs

This commit is contained in:
2026-02-08 16:35:00 +00:00
parent 8eed0df577
commit 8fc7302a58
5 changed files with 529 additions and 33 deletions

View File

@@ -17,7 +17,18 @@ router.get('/ready', async (_req, res) => {
try {
await db.execute('select 1');
await minioClient.bucketExists(minioBucket);
const sfuSessions = sfuService ? await sfuService.listSessions() : [];
const sfu = sfuService;
const sfuSessions = sfu ? await sfu.listSessions() : [];
const sfuSessionIds = sfuSessions.map((session) => session.streamSessionId);
const sfuTransports = sfu
? (await Promise.all(sfuSessionIds.map(async (streamSessionId) => await sfu.listTransports(streamSessionId)))).flat()
: [];
const sfuProducers = sfu
? (await Promise.all(sfuSessionIds.map(async (streamSessionId) => await sfu.listProducers(streamSessionId)))).flat()
: [];
const sfuConsumers = sfu
? (await Promise.all(sfuSessionIds.map(async (streamSessionId) => await sfu.listConsumers(streamSessionId)))).flat()
: [];
res.json({
status: 'ready',
@@ -28,6 +39,9 @@ router.get('/ready', async (_req, res) => {
mediaProvider: mediaProvider.name,
sfuService: sfuService ? sfuService.mode : 'disabled',
sfuActiveSessions: sfuSessions.filter((session) => session.state !== 'ended').length,
sfuTransports: sfuTransports.length,
sfuProducers: sfuProducers.length,
sfuConsumers: sfuConsumers.length,
},
timestamp: new Date().toISOString(),
});