initial commit
This commit is contained in:
34
server/api/live/webrtc/connect-transport.post.js
Normal file
34
server/api/live/webrtc/connect-transport.post.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import { requireAuth } from '../../../utils/authHelpers.js'
|
||||
import { getLiveSession } from '../../../utils/liveSessions.js'
|
||||
import { getTransport } from '../../../utils/mediasoup.js'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
requireAuth(event) // Verify authentication
|
||||
const body = await readBody(event).catch(() => ({}))
|
||||
const { sessionId, transportId, dtlsParameters } = body
|
||||
|
||||
if (!sessionId || !transportId || !dtlsParameters) {
|
||||
throw createError({ statusCode: 400, message: 'sessionId, transportId, and dtlsParameters required' })
|
||||
}
|
||||
|
||||
const session = getLiveSession(sessionId)
|
||||
if (!session) {
|
||||
throw createError({ statusCode: 404, message: 'Session not found' })
|
||||
}
|
||||
// Note: Both publisher and viewers can connect their own transports
|
||||
// The transportId ensures they can only connect transports they created
|
||||
|
||||
const transport = getTransport(transportId)
|
||||
if (!transport) {
|
||||
throw createError({ statusCode: 404, message: 'Transport not found' })
|
||||
}
|
||||
|
||||
try {
|
||||
await transport.connect({ dtlsParameters })
|
||||
return { connected: true }
|
||||
}
|
||||
catch (err) {
|
||||
console.error('[connect-transport] Transport connect failed:', transportId, err.message || err)
|
||||
throw createError({ statusCode: 500, message: err.message || 'Transport connect failed' })
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user