LINXD-2209-black-screen-when-2-video-calls-are-answered-simultaneously #3

Merged
sergiu merged 31 commits from LINXD-2209-black-screen-when-2-video-calls-are-answered-simultaneously into master 2022-09-15 14:49:55 +00:00
Showing only changes of commit b834016dcb - Show all commits

64
app.js
View File

@ -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')

not important: we don't need socket.id on clients

not important: we don't need socket.id on clients
// })
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,27 +139,25 @@ peers.on('connection', async socket => {
})
cristi marked this conversation as resolved Outdated

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)?

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)?

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
socket.on('createWebRtcTransport', async ({ sender, callId }, callback) => {