Skip to content

Commit

Permalink
[mirotalksfu] - refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
miroslavpejic85 committed Dec 23, 2024
1 parent 968ca95 commit 98e5bf2
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 33 deletions.
11 changes: 6 additions & 5 deletions app/src/Peer.js
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ module.exports = class Peer {
const { scalabilityMode } = rtpParameters.encodings[0];
const spatialLayer = parseInt(scalabilityMode.substring(1, 2)); // 1/2/3
const temporalLayer = parseInt(scalabilityMode.substring(3, 4)); // 1/2/3

log.debug(`Producer [${type}-${kind}] ----->`, {
scalabilityMode,
spatialLayer,
Expand Down Expand Up @@ -251,7 +252,7 @@ module.exports = class Peer {
this.consumers.delete(consumer_id);
}

async createConsumer(consumer_transport_id, producer_id, rtpCapabilities) {
async createConsumer(consumer_transport_id, producerId, rtpCapabilities) {
if (!this.transports.has(consumer_transport_id)) {
throw new Error(`Consumer transport with ID ${consumer_transport_id} not found`);
}
Expand All @@ -261,7 +262,7 @@ module.exports = class Peer {
let consumer;
try {
consumer = await consumerTransport.consume({
producerId: producer_id,
producerId,
rtpCapabilities,
enableRtx: true, // Enable NACK for OPUS.
paused: true,
Expand All @@ -284,8 +285,8 @@ module.exports = class Peer {

try {
await consumer.setPreferredLayers({
spatialLayer: spatialLayer,
temporalLayer: temporalLayer,
spatialLayer,
temporalLayer,
});
log.debug(`Consumer [${type}-${kind}] ----->`, {
scalabilityMode,
Expand All @@ -310,7 +311,7 @@ module.exports = class Peer {
return {
consumer: consumer,
params: {
producerId: producer_id,
producerId,
id: id,
kind: kind,
rtpParameters: rtpParameters,
Expand Down
12 changes: 6 additions & 6 deletions app/src/Room.js
Original file line number Diff line number Diff line change
Expand Up @@ -707,30 +707,30 @@ module.exports = class Room {
// CONSUME
// ####################################################

async consume(socket_id, consumer_transport_id, producer_id, rtpCapabilities) {
async consume(socket_id, consumer_transport_id, producerId, rtpCapabilities, type) {
if (!this.peers.has(socket_id)) {
throw new Error(`Peer with socket ID ${socket_id} not found in the room`);
}

if (!this.router.canConsume({ producerId: producer_id, rtpCapabilities })) {
throw new Error(`Cannot consume producer with ID ${producer_id}, router validation failed`);
if (!this.router.canConsume({ producerId, rtpCapabilities })) {
throw new Error(`Cannot consume producer with ID ${producerId} type ${type}, router validation failed`);
}

const peer = this.getPeer(socket_id);

let peerConsumer;
try {
peerConsumer = await peer.createConsumer(consumer_transport_id, producer_id, rtpCapabilities);
peerConsumer = await peer.createConsumer(consumer_transport_id, producerId, rtpCapabilities);
} catch (error) {
log.error(`Error creating consumer for peer with socket ID ${socket_id}`, error);
throw new Error(
`Failed to create consumer with transport ID ${consumer_transport_id} and producer ID ${producer_id} for peer ${socket_id}`,
`Failed to create consumer with transport ID ${consumer_transport_id} and producer ID ${producerId} type ${type} for peer ${socket_id}`,
);
}

if (!peerConsumer) {
throw new Error(
`Consumer creation failed for transport ID ${consumer_transport_id} and producer ID ${producer_id}`,
`Consumer creation failed for transport ID ${consumer_transport_id} and producer ID ${producerId}`,
);
}

Expand Down
31 changes: 16 additions & 15 deletions app/src/Server.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ dev dependencies: {
* @license For commercial or closed source, contact us at [email protected] or purchase directly via CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - [email protected]
* @version 1.6.63
* @version 1.6.64
*
*/

Expand Down Expand Up @@ -1674,7 +1674,7 @@ function startServer() {
}
});

socket.on('consume', async ({ consumerTransportId, producerId, rtpCapabilities }, callback) => {
socket.on('consume', async ({ consumerTransportId, producerId, rtpCapabilities, type }, callback) => {
if (!roomExists(socket)) {
return callback({ error: 'Room not found' });
}
Expand All @@ -1684,10 +1684,11 @@ function startServer() {
const { peer_name } = peer || 'undefined';

try {
const params = await room.consume(socket.id, consumerTransportId, producerId, rtpCapabilities);
const params = await room.consume(socket.id, consumerTransportId, producerId, rtpCapabilities, type);

log.debug('Consuming', {
peer_name: peer_name,
producer_type: type,
producer_id: producerId,
consumer_id: params ? params.id : undefined,
});
Expand All @@ -1711,89 +1712,89 @@ function startServer() {
room.closeProducer(socket.id, data.producer_id);
});

socket.on('pauseProducer', async ({ producer_id }, callback) => {
socket.on('pauseProducer', async ({ producer_id, type }, callback) => {
if (!roomExists(socket)) return;

const peer = getPeer(socket);

if (!peer) {
return callback({
error: `Peer with ID: ${socket.id} for producer with id "${producer_id}" not found`,
error: `Peer with ID: ${socket.id} for producer with id "${producer_id}" type "${type}" not found`,
});
}

const producer = peer.getProducer(producer_id);

if (!producer) {
return callback({ error: `Producer with id "${producer_id}" not found` });
return callback({ error: `Producer with id "${producer_id}" type "${type}" not found` });
}

try {
await producer.pause();

const { peer_name } = peer || 'undefined';

log.debug('Producer paused', { peer_name: peer_name, producer_id: producer_id });
log.debug('Producer paused', { peer_name, producer_id, type });

callback('successfully');
} catch (error) {
callback({ error: error.message });
}
});

socket.on('resumeProducer', async ({ producer_id }, callback) => {
socket.on('resumeProducer', async ({ producer_id, type }, callback) => {
if (!roomExists(socket)) return;

const peer = getPeer(socket);

if (!peer) {
return callback({
error: `peer with ID: "${socket.id}" for producer with id "${producer_id}" not found`,
error: `peer with ID: "${socket.id}" for producer with id "${producer_id}" type "${type}" not found`,
});
}

const producer = peer.getProducer(producer_id);

if (!producer) {
return callback({ error: `producer with id "${producer_id}" not found` });
return callback({ error: `producer with id "${producer_id}" type "${type}" not found` });
}

try {
await producer.resume();

const { peer_name } = peer || 'undefined';

log.debug('Producer resumed', { peer_name: peer_name, producer_id: producer_id });
log.debug('Producer resumed', { peer_name, producer_id, type });

callback('successfully');
} catch (error) {
callback({ error: error.message });
}
});

socket.on('resumeConsumer', async ({ consumer_id }, callback) => {
socket.on('resumeConsumer', async ({ consumer_id, type }, callback) => {
if (!roomExists(socket)) return;

const peer = getPeer(socket);

if (!peer) {
return callback({
error: `peer with ID: "${socket.id}" for consumer with id "${consumer_id}" not found`,
error: `peer with ID: "${socket.id}" for consumer with id "${consumer_id}" type "${type}" not found`,
});
}

const consumer = peer.getConsumer(consumer_id);

if (!consumer) {
return callback({ error: `consumer with id "${consumer_id}" not found` });
return callback({ error: `consumer with id "${consumer_id}" type "${type}" not found` });
}

try {
await consumer.resume();

const { peer_name } = peer || 'undefined';

log.debug('Consumer resumed', { peer_name: peer_name, consumer_id: consumer_id });
log.debug('Consumer resumed', { peer_name, consumer_id, type });

callback('successfully');
} catch (error) {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mirotalksfu",
"version": "1.6.63",
"version": "1.6.64",
"description": "WebRTC SFU browser-based video calls",
"main": "Server.js",
"scripts": {
Expand Down
4 changes: 2 additions & 2 deletions public/js/Room.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ if (location.href.substr(0, 5) !== 'https') location.href = 'https' + location.h
* @license For commercial or closed source, contact us at [email protected] or purchase directly via CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - [email protected]
* @version 1.6.63
* @version 1.6.64
*
*/

Expand Down Expand Up @@ -4618,7 +4618,7 @@ function showAbout() {
imageUrl: image.about,
customClass: { image: 'img-about' },
position: 'center',
title: 'WebRTC SFU v1.6.63',
title: 'WebRTC SFU v1.6.64',
html: `
<br />
<div id="about">
Expand Down
9 changes: 5 additions & 4 deletions public/js/RoomClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* @license For commercial or closed source, contact us at [email protected] or purchase directly via CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - [email protected]
* @version 1.6.63
* @version 1.6.64
*
*/

Expand Down Expand Up @@ -2051,7 +2051,7 @@ class RoomClient {
this.producers.get(producer_id).pause();

try {
const response = await this.socket.request('pauseProducer', { producer_id: producer_id });
const response = await this.socket.request('pauseProducer', { producer_id, type });
console.log('Producer paused', response);
} catch (error) {
console.error('Error pausing producer', error);
Expand Down Expand Up @@ -2082,7 +2082,7 @@ class RoomClient {
this.producers.get(producer_id).resume();

try {
const response = await this.socket.request('resumeProducer', { producer_id: producer_id });
const response = await this.socket.request('resumeProducer', { producer_id, type });
console.log('Producer resumed', response);
} catch (error) {
console.error('Error resuming producer', error);
Expand Down Expand Up @@ -2286,9 +2286,10 @@ class RoomClient {

try {
data = await this.socket.request('consume', {
rtpCapabilities,
consumerTransportId: this.consumerTransport.id,
rtpCapabilities,
producerId,
type,
});

if (data.error) {
Expand Down

0 comments on commit 98e5bf2

Please sign in to comment.