LINXD-2209-black-screen-when-2-video-calls-are-answered-simultaneously #3
26
app.js
26
app.js
@ -36,6 +36,7 @@ let worker
|
||||
*
|
||||
**/
|
||||
let videoCalls = {}
|
||||
let socketDetails = {}
|
||||
|
||||
app.get('/', (_req, res) => {
|
||||
res.send('Hello from mediasoup app!')
|
||||
@ -112,16 +113,18 @@ peers.on('connection', async socket => {
|
||||
|
||||
socket.on('disconnect', () => {
|
||||
// do some cleanup
|
||||
console.log('peer disconnected')
|
||||
console.log('peer disconnected | socket.id', socket.id)
|
||||
delete socketDetails[socket.id];
|
||||
})
|
||||
|
||||
socket.on('createRoom', async ({ callId }, callback) => {
|
||||
if (videoCalls[callId].router === undefined) {
|
||||
console.log('[createRoom] callId', callId);
|
||||
videoCalls[callId].router = await worker.createRouter({ mediaCodecs })
|
||||
videoCalls[callId].router = await worker.createRouter({ mediaCodecs });
|
||||
console.log(`[createRoom] Router ID: ${videoCalls[callId].router.id}`)
|
||||
}
|
||||
getRtpCapabilities(callId, callback)
|
||||
socketDetails[socket.id] = callId;
|
||||
getRtpCapabilities(callId, callback);
|
||||
})
|
||||
|
||||
// Client emits a request to create server side Transport
|
||||
@ -137,13 +140,16 @@ peers.on('connection', async socket => {
|
||||
})
|
||||
cristi marked this conversation as resolved
Outdated
|
||||
|
||||
// see client's socket.emit('transport-connect', ...)
|
||||
socket.on('transport-connect', async ({ dtlsParameters, callId }) => {
|
||||
console.log('[transport-connect] DTLS PARAMS... ', { dtlsParameters })
|
||||
socket.on('transport-connect', async ({ dtlsParameters }) => {
|
||||
const callId = socketDetails[socket.id];
|
||||
console.log(`[transport-connect] socket.id ${socket.id} | callId ${callId} | DTLS PARAMS... ${dtlsParameters}`)
|
||||
await videoCalls[callId].producerTransport.connect({ dtlsParameters })
|
||||
})
|
||||
|
||||
// see client's socket.emit('transport-produce', ...)
|
||||
socket.on('transport-produce', async ({ kind, rtpParameters, appData, callId }) => {
|
||||
socket.on('transport-produce', async ({ kind, rtpParameters, appData }) => {
|
||||
const callId = socketDetails[socket.id];
|
||||
console.log('[transport-produce] | socket.id', socket.id, '| callId', callId);
|
||||
// call produce based on the prameters from the client
|
||||
videoCalls[callId].producer = await videoCalls[callId].producerTransport.produce({
|
||||
kind,
|
||||
@ -164,12 +170,14 @@ peers.on('connection', async socket => {
|
||||
})
|
||||
|
||||
// see client's socket.emit('transport-recv-connect', ...)
|
||||
socket.on('transport-recv-connect', async ({ dtlsParameters, callId }) => {
|
||||
console.log(`[transport-recv-connect] DTLS PARAMS: ${dtlsParameters}`)
|
||||
socket.on('transport-recv-connect', async ({ dtlsParameters }) => {
|
||||
const callId = socketDetails[socket.id];
|
||||
console.log(`[transport-recv-connect] socket.id ${socket.id} | callId ${callId} | DTLS PARAMS: ${dtlsParameters}`);
|
||||
await videoCalls[callId].consumerTransport.connect({ dtlsParameters })
|
||||
})
|
||||
|
||||
socket.on('consume', async ({ rtpCapabilities, callId }, callback) => {
|
||||
socket.on('consume', async ({ rtpCapabilities }, callback) => {
|
||||
const callId = socketDetails[socket.id];
|
||||
console.log('[consume] callId', callId);
|
||||
try {
|
||||
// console.log('consume', rtpCapabilities, callId);
|
||||
|
Loading…
Reference in New Issue
Block a user
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.