Compare commits
22 Commits
procedure
...
5dfbec1c0d
Author | SHA1 | Date | |
---|---|---|---|
5dfbec1c0d | |||
d1086f9ec0 | |||
cf6725dec4 | |||
512d0f8bed | |||
4b9987efe8 | |||
51cf3534a1 | |||
f206dfc5ae | |||
f5d45ce3a3 | |||
9560d33870 | |||
189c262b32 | |||
e53f4c353f | |||
d91fcfd584 | |||
12ad433c9f | |||
2c777f4746 | |||
52222fc255 | |||
7d5d471d7d | |||
bdda13e0d5 | |||
1fb5df4cde | |||
ea1c8e7e80 | |||
21b4b6d04f | |||
a1d172ee07 | |||
0c917d6477 |
59
app.js
59
app.js
@ -289,11 +289,15 @@ peers.on('connection', async (socket) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
videoCalls[callId].receiverVideoProducer.on('transportclose', () => {
|
videoCalls[callId].receiverVideoProducer.on('transportclose', () => {
|
||||||
const callId = socketDetails[socket.id];
|
|
||||||
console.log('transport for this producer closed', callId);
|
console.log('transport for this producer closed', callId);
|
||||||
closeCall(callId);
|
closeCall(callId);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
videoCalls[callId].receiverVideoProducer.observer.on("close", () => {
|
||||||
|
console.log(`[close-producer] receiverVideoProducer receiver --EMIT--> initiator | callId: ${callId} | kind: ${kind}`);
|
||||||
|
videoCalls[callId].initiatorSocket.emit('close-producer', { callId, kind });
|
||||||
|
})
|
||||||
|
|
||||||
// Send back to the client the Producer's id
|
// Send back to the client the Producer's id
|
||||||
callback &&
|
callback &&
|
||||||
callback({
|
callback({
|
||||||
@ -310,11 +314,15 @@ peers.on('connection', async (socket) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
videoCalls[callId].initiatorVideoProducer.on('transportclose', () => {
|
videoCalls[callId].initiatorVideoProducer.on('transportclose', () => {
|
||||||
const callId = socketDetails[socket.id];
|
|
||||||
console.log('transport for this producer closed', callId);
|
console.log('transport for this producer closed', callId);
|
||||||
closeCall(callId);
|
closeCall(callId);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
videoCalls[callId].initiatorVideoProducer.observer.on("close", () => {
|
||||||
|
console.log(`[close-producer] initiatorVideoProducer initiator --EMIT--> receiver | callId: ${callId} | kind: ${kind}`);
|
||||||
|
videoCalls[callId].receiverSocket.emit('close-producer', { callId, kind });
|
||||||
|
})
|
||||||
|
|
||||||
callback &&
|
callback &&
|
||||||
callback({
|
callback({
|
||||||
id: videoCalls[callId].initiatorVideoProducer.id,
|
id: videoCalls[callId].initiatorVideoProducer.id,
|
||||||
@ -332,11 +340,15 @@ peers.on('connection', async (socket) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
videoCalls[callId].receiverAudioProducer.on('transportclose', () => {
|
videoCalls[callId].receiverAudioProducer.on('transportclose', () => {
|
||||||
const callId = socketDetails[socket.id];
|
|
||||||
console.log('transport for this producer closed', callId);
|
console.log('transport for this producer closed', callId);
|
||||||
closeCall(callId);
|
closeCall(callId);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
videoCalls[callId].receiverAudioProducer.observer.on("close", () => {
|
||||||
|
console.log(`[close-producer] receiverAudioProducer receiver --EMIT--> initiator | callId: ${callId} | kind: ${kind}`);
|
||||||
|
videoCalls[callId].initiatorSocket.emit('close-producer', { callId, kind });
|
||||||
|
})
|
||||||
|
|
||||||
// Send back to the client the Producer's id
|
// Send back to the client the Producer's id
|
||||||
callback &&
|
callback &&
|
||||||
callback({
|
callback({
|
||||||
@ -353,11 +365,15 @@ peers.on('connection', async (socket) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
videoCalls[callId].initiatorAudioProducer.on('transportclose', () => {
|
videoCalls[callId].initiatorAudioProducer.on('transportclose', () => {
|
||||||
const callId = socketDetails[socket.id];
|
|
||||||
console.log('transport for this producer closed', callId);
|
console.log('transport for this producer closed', callId);
|
||||||
closeCall(callId);
|
closeCall(callId);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
videoCalls[callId].initiatorAudioProducer.observer.on("close", () => {
|
||||||
|
console.log(`[close-producer] initiatorAudioProducer initiator --EMIT--> receiver | callId: ${callId} | kind: ${kind}`);
|
||||||
|
videoCalls[callId].receiverSocket.emit('close-producer', { callId, kind });
|
||||||
|
})
|
||||||
|
|
||||||
// Send back to the client the Producer's id
|
// Send back to the client the Producer's id
|
||||||
callback &&
|
callback &&
|
||||||
callback({
|
callback({
|
||||||
@ -476,7 +492,7 @@ peers.on('connection', async (socket) => {
|
|||||||
socket.on('consumer-resume', () => {
|
socket.on('consumer-resume', () => {
|
||||||
try {
|
try {
|
||||||
const callId = socketDetails[socket.id];
|
const callId = socketDetails[socket.id];
|
||||||
console.log(`[consumer-resume] callId ${callId}`);
|
console.log(`[consumer-resume] callId: ${callId}`);
|
||||||
if (isInitiator(callId, socket.id)) {
|
if (isInitiator(callId, socket.id)) {
|
||||||
videoCalls[callId]?.initiatorConsumerVideo?.resume();
|
videoCalls[callId]?.initiatorConsumerVideo?.resume();
|
||||||
videoCalls[callId]?.initiatorConsumerAudio?.resume();
|
videoCalls[callId]?.initiatorConsumerAudio?.resume();
|
||||||
@ -488,6 +504,25 @@ peers.on('connection', async (socket) => {
|
|||||||
console.log(`ERROR | consumer-resume | callId ${socketDetails[socket.id]} | ${error.message}`);
|
console.log(`ERROR | consumer-resume | callId ${socketDetails[socket.id]} | ${error.message}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.on('close-producer', ({ callId, kind}) => {
|
||||||
|
try {
|
||||||
|
const callId = socketDetails[socket.id];
|
||||||
|
console.log(`[close-producer] callId: ${callId} | kind: kind`);
|
||||||
|
if (isInitiator(callId, socket.id)) {
|
||||||
|
console.log(`[close-producer] initiator`);
|
||||||
|
if (kind === 'video') videoCalls[callId].initiatorVideoProducer.close()
|
||||||
|
else if (kind === 'audio') videoCalls[callId].initiatorAudioProducer.close()
|
||||||
|
} else {
|
||||||
|
console.log(`[close-producer] receiver`);
|
||||||
|
if (kind === 'video') videoCalls[callId].receiverVideoProducer.close()
|
||||||
|
else if (kind === 'audio') videoCalls[callId].receiverAudioProducer.close()
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.log(`ERROR | consumer-resume | callId ${socketDetails[socket.id]} | ${error.message}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const consumeVideo = async (callId, socketId, rtpCapabilities) => {
|
const consumeVideo = async (callId, socketId, rtpCapabilities) => {
|
||||||
@ -500,18 +535,10 @@ const consumeVideo = async (callId, socketId, rtpCapabilities) => {
|
|||||||
|
|
||||||
// https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-on-transportclose
|
// https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-on-transportclose
|
||||||
videoCalls[callId].initiatorConsumerVideo.on('transportclose', () => {
|
videoCalls[callId].initiatorConsumerVideo.on('transportclose', () => {
|
||||||
const callId = socketDetails[socket.id];
|
|
||||||
console.log('transport close from consumer', callId);
|
console.log('transport close from consumer', callId);
|
||||||
closeCall(callId);
|
closeCall(callId);
|
||||||
});
|
});
|
||||||
|
|
||||||
// https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-on-producerclose
|
|
||||||
videoCalls[callId].initiatorConsumerVideo.on('producerclose', () => {
|
|
||||||
const callId = socketDetails[socket.id];
|
|
||||||
console.log('producer of consumer closed', callId);
|
|
||||||
closeCall(callId);
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: videoCalls[callId].initiatorConsumerVideo.id,
|
id: videoCalls[callId].initiatorConsumerVideo.id,
|
||||||
producerId: videoCalls[callId].receiverVideoProducer.id,
|
producerId: videoCalls[callId].receiverVideoProducer.id,
|
||||||
@ -531,12 +558,6 @@ const consumeVideo = async (callId, socketId, rtpCapabilities) => {
|
|||||||
closeCall(callId);
|
closeCall(callId);
|
||||||
});
|
});
|
||||||
|
|
||||||
videoCalls[callId].receiverConsumerVideo.on('producerclose', () => {
|
|
||||||
const callId = socketDetails[socket.id];
|
|
||||||
console.log('producer of consumer closed', callId);
|
|
||||||
closeCall(callId);
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: videoCalls[callId].receiverConsumerVideo.id,
|
id: videoCalls[callId].receiverConsumerVideo.id,
|
||||||
producerId: videoCalls[callId].initiatorVideoProducer.id,
|
producerId: videoCalls[callId].initiatorVideoProducer.id,
|
||||||
|
@ -20353,7 +20353,7 @@ module.exports = yeast;
|
|||||||
},{}],94:[function(require,module,exports){
|
},{}],94:[function(require,module,exports){
|
||||||
module.exports = {
|
module.exports = {
|
||||||
hubAddress: 'https://hub.dev.linx.safemobile.com/',
|
hubAddress: 'https://hub.dev.linx.safemobile.com/',
|
||||||
mediasoupAddress: 'https://video.safemobile.org/',
|
mediasoupAddress: 'https://testing.video.safemobile.org/',
|
||||||
}
|
}
|
||||||
},{}],95:[function(require,module,exports){
|
},{}],95:[function(require,module,exports){
|
||||||
const io = require('socket.io-client')
|
const io = require('socket.io-client')
|
||||||
@ -20457,6 +20457,15 @@ setTimeout(() => {
|
|||||||
console.log(`🟢 new-producer | callId: ${callId} | kind: ${kind} | Ready to consume`);
|
console.log(`🟢 new-producer | callId: ${callId} | kind: ${kind} | Ready to consume`);
|
||||||
connectRecvTransport();
|
connectRecvTransport();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
socket.on('close-producer', ({ callId, kind }) => {
|
||||||
|
console.log(`🔴 close-producer | callId: ${callId} | kind: ${kind}`);
|
||||||
|
if (kind === 'video') {
|
||||||
|
consumerVideo.close()
|
||||||
|
remoteVideo.srcObject = null
|
||||||
|
}
|
||||||
|
else if (kind === 'audio') consumerAudio.close()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_PRODUCER === true) {
|
if (IS_PRODUCER === true) {
|
||||||
@ -20850,6 +20859,36 @@ const getVideoTrask = async (videoParams) => {
|
|||||||
console.log('transport closed so consumer closed')
|
console.log('transport closed so consumer closed')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
consumerVideo.on('producerclose', () => {
|
||||||
|
console.log('===================1 consumerVideo producerclose');
|
||||||
|
});
|
||||||
|
|
||||||
|
consumerVideo.on("producerclose", () => {
|
||||||
|
console.log('====================2 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
consumerVideo.on("close", () => {
|
||||||
|
console.log('====================3 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
consumerVideo.on("close-producer", () => {
|
||||||
|
console.log('====================4 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
consumerVideo.observer.on('producerclose', () => {
|
||||||
|
console.log('===================11 consumerVideo producerclose');
|
||||||
|
});
|
||||||
|
|
||||||
|
consumerVideo.observer.on("producerclose", () => {
|
||||||
|
console.log('====================22 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
consumerVideo.observer.on("close", () => {
|
||||||
|
console.log('====================33 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
consumerVideo.observer.on("close-producer", () => {
|
||||||
|
console.log('====================44 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
|
||||||
return consumerVideo.track
|
return consumerVideo.track
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20865,6 +20904,14 @@ const getAudioTrask = async (audioParams) => {
|
|||||||
console.log('transport closed so consumer closed')
|
console.log('transport closed so consumer closed')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
consumerAudio.on('producerclose', () => {
|
||||||
|
console.log('===================1 consumerAudio producerclose');
|
||||||
|
});
|
||||||
|
|
||||||
|
consumerAudio.on("producerclose", () => {
|
||||||
|
console.log('====================2 consumerAudio producerclose');
|
||||||
|
})
|
||||||
|
|
||||||
const audioTrack = consumerAudio.track
|
const audioTrack = consumerAudio.track
|
||||||
|
|
||||||
audioTrack.applyConstraints({
|
audioTrack.applyConstraints({
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
hubAddress: 'https://hub.dev.linx.safemobile.com/',
|
hubAddress: 'https://hub.dev.linx.safemobile.com/',
|
||||||
mediasoupAddress: 'https://video.safemobile.org/',
|
mediasoupAddress: 'https://testing.video.safemobile.org/',
|
||||||
}
|
}
|
@ -99,6 +99,15 @@ setTimeout(() => {
|
|||||||
console.log(`🟢 new-producer | callId: ${callId} | kind: ${kind} | Ready to consume`);
|
console.log(`🟢 new-producer | callId: ${callId} | kind: ${kind} | Ready to consume`);
|
||||||
connectRecvTransport();
|
connectRecvTransport();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
socket.on('close-producer', ({ callId, kind }) => {
|
||||||
|
console.log(`🔴 close-producer | callId: ${callId} | kind: ${kind}`);
|
||||||
|
if (kind === 'video') {
|
||||||
|
consumerVideo.close()
|
||||||
|
remoteVideo.srcObject = null
|
||||||
|
}
|
||||||
|
else if (kind === 'audio') consumerAudio.close()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_PRODUCER === true) {
|
if (IS_PRODUCER === true) {
|
||||||
@ -492,6 +501,36 @@ const getVideoTrask = async (videoParams) => {
|
|||||||
console.log('transport closed so consumer closed')
|
console.log('transport closed so consumer closed')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
consumerVideo.on('producerclose', () => {
|
||||||
|
console.log('===================1 consumerVideo producerclose');
|
||||||
|
});
|
||||||
|
|
||||||
|
consumerVideo.on("producerclose", () => {
|
||||||
|
console.log('====================2 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
consumerVideo.on("close", () => {
|
||||||
|
console.log('====================3 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
consumerVideo.on("close-producer", () => {
|
||||||
|
console.log('====================4 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
consumerVideo.observer.on('producerclose', () => {
|
||||||
|
console.log('===================11 consumerVideo producerclose');
|
||||||
|
});
|
||||||
|
|
||||||
|
consumerVideo.observer.on("producerclose", () => {
|
||||||
|
console.log('====================22 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
consumerVideo.observer.on("close", () => {
|
||||||
|
console.log('====================33 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
consumerVideo.observer.on("close-producer", () => {
|
||||||
|
console.log('====================44 consumerVideo producerclose');
|
||||||
|
})
|
||||||
|
|
||||||
return consumerVideo.track
|
return consumerVideo.track
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -507,6 +546,14 @@ const getAudioTrask = async (audioParams) => {
|
|||||||
console.log('transport closed so consumer closed')
|
console.log('transport closed so consumer closed')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
consumerAudio.on('producerclose', () => {
|
||||||
|
console.log('===================1 consumerAudio producerclose');
|
||||||
|
});
|
||||||
|
|
||||||
|
consumerAudio.on("producerclose", () => {
|
||||||
|
console.log('====================2 consumerAudio producerclose');
|
||||||
|
})
|
||||||
|
|
||||||
const audioTrack = consumerAudio.track
|
const audioTrack = consumerAudio.track
|
||||||
|
|
||||||
audioTrack.applyConstraints({
|
audioTrack.applyConstraints({
|
||||||
|
Reference in New Issue
Block a user