LINXD-2209-black-screen-when-2-video-calls-are-answered-simultaneously #3
64
app.js
64
app.js
@ -96,6 +96,36 @@ const mediaCodecs = [
|
||||
},
|
||||
]
|
||||
|
||||
let queue = []
|
||||
|
||||
// queue.push({
|
||||
// callId: 1,
|
||||
// callback: () => console.log('callback')
|
||||
// })
|
||||
// queue.push({
|
||||
// callId: 2,
|
||||
// callback: () => console.log('callback')
|
||||
// })
|
||||
// queue.push({
|
||||
// callId: 3,
|
||||
// callback: () => console.log('callback')
|
||||
|
||||
// })
|
||||
|
||||
|
||||
const getRtpCapabilities = (callId, callback) => {
|
||||
const rtpCapabilities = router[callId].rtpCapabilities
|
||||
callback({ rtpCapabilities })
|
||||
}
|
||||
|
||||
setInterval(async () => {
|
||||
const { callId, callback } = queue.shift();
|
||||
if (router[callId] === undefined) {
|
||||
router[callId] = await worker.createRouter({ mediaCodecs })
|
||||
console.log(`[createRoom] Router ID: ${router[callId].id}`)
|
||||
getRtpCapabilities(callId, callback)
|
||||
}
|
||||
}, 2000);
|
||||
|
||||
peers.on('connection', async socket => {
|
||||
console.log('[connection] socketId:', socket.id)
|
||||
socket.emit('connection-success', {
|
||||
@ -109,26 +139,24 @@ peers.on('connection', async socket => {
|
||||
})
|
||||
|
||||
cristi marked this conversation as resolved
Outdated
cristi
commented
For refactor: why do we need to differentiate between producerTransport and consumerTransport? Why don't we have a For refactor: why do we need to differentiate between producerTransport and consumerTransport? Why don't we have a `transport` variable (it is only one transport for each client regardless if they are producer or consumer)?
cristi
commented
We need producer and consumer transports for each call. We need producer and consumer transports for each call.
|
||||
socket.on('createRoom', async ({ callId }, callback) => {
|
||||
console.log('[createRoom] callId', callId);
|
||||
console.log('Router length:', Object.keys(router).length);
|
||||
if (router[callId] === undefined) {
|
||||
// worker.createRouter(options)
|
||||
// options = { mediaCodecs, appData }
|
||||
// mediaCodecs -> defined above
|
||||
// appData -> custom application data - we are not supplying any
|
||||
// none of the two are required
|
||||
router[callId] = await worker.createRouter({ mediaCodecs })
|
||||
console.log(`[createRoom] Router ID: ${router[callId].id}`)
|
||||
}
|
||||
// console.log('[createRoom] callId', callId);
|
||||
// console.log('Router length:', Object.keys(router).length);
|
||||
// if (router[callId] === undefined) {
|
||||
// // worker.createRouter(options)
|
||||
// // options = { mediaCodecs, appData }
|
||||
// // mediaCodecs -> defined above
|
||||
// // appData -> custom application data - we are not supplying any
|
||||
// // none of the two are required
|
||||
// router[callId] = await worker.createRouter({ mediaCodecs })
|
||||
// console.log(`[createRoom] Router ID: ${router[callId].id}`)
|
||||
// }
|
||||
|
||||
getRtpCapabilities(callId, callback)
|
||||
// getRtpCapabilities(callId, callback)
|
||||
queue.push({
|
||||
callId,
|
||||
callback
|
||||
})
|
||||
})
|
||||
|
||||
const getRtpCapabilities = (callId, callback) => {
|
||||
const rtpCapabilities = router[callId].rtpCapabilities
|
||||
|
||||
callback({ rtpCapabilities })
|
||||
}
|
||||
|
||||
// Client emits a request to create server side Transport
|
||||
// We need to differentiate between the producer and consumer transports
|
||||
|
Loading…
Reference in New Issue
Block a user
not important: we don't need socket.id on clients