diff --git a/app/src/Room.js b/app/src/Room.js index 40daaac7..fe96af27 100644 --- a/app/src/Room.js +++ b/app/src/Room.js @@ -568,7 +568,12 @@ module.exports = class Room { const peer = this.getPeer(socket_id); - peer.addTransport(transport); + try { + peer.addTransport(transport); + } catch (error) { + log.error('Failed to add peer transport', error); + throw new Error(`Failed to add peer transport ${id}`); + } log.debug('Transport created', { transportId: id, transportType: type }); @@ -664,7 +669,9 @@ module.exports = class Room { peerProducer = await peer.createProducer(producerTransportId, rtpParameters, kind, type); } catch (error) { log.error(`Error creating producer for peer with socket ID ${socket_id}`, error); - throw new Error(`Error creating producer with transport ID ${producerTransportId} for peer ${socket_id}`); + throw new Error( + `Error creating producer with transport ID ${producerTransportId} type ${type} for peer ${socket_id}`, + ); } if (!peerProducer) { diff --git a/app/src/Server.js b/app/src/Server.js index 8e1683f7..5abedd72 100644 --- a/app/src/Server.js +++ b/app/src/Server.js @@ -55,7 +55,7 @@ dev dependencies: { * @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com - * @version 1.6.64 + * @version 1.6.65 * */ @@ -1561,6 +1561,9 @@ function startServer() { try { const createWebRtcTransport = await room.createWebRtcTransport(socket.id); + + //log.debug('Create WebRtc transport callback', { callback: createWebRtcTransport }); + callback(createWebRtcTransport); } catch (err) { log.error('Create WebRtc Transport error', err); @@ -1574,16 +1577,20 @@ function startServer() { } const { room, peer } = getRoomAndPeer(socket); + const { peer_name } = peer || 'undefined'; log.debug('Connect transport', { peer_name: peer_name, transport_id: transport_id }); try { const connectTransport = await room.connectPeerTransport(socket.id, transport_id, dtlsParameters); - callback({ success: true, message: connectTransport }); + + //log.debug('Connect transport', { callback: connectTransport }); + + callback(connectTransport); } catch (err) { log.error('Connect transport error', err); - callback({ success: false, error: err.message }); + callback({ error: err.message }); } }); diff --git a/package.json b/package.json index b2d56e17..19751ea3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mirotalksfu", - "version": "1.6.64", + "version": "1.6.65", "description": "WebRTC SFU browser-based video calls", "main": "Server.js", "scripts": { diff --git a/public/js/Room.js b/public/js/Room.js index 10e71d06..2ca6864b 100644 --- a/public/js/Room.js +++ b/public/js/Room.js @@ -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 license.mirotalk@gmail.com or purchase directly via CodeCanyon * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com - * @version 1.6.64 + * @version 1.6.65 * */ @@ -4618,7 +4618,7 @@ function showAbout() { imageUrl: image.about, customClass: { image: 'img-about' }, position: 'center', - title: 'WebRTC SFU v1.6.64', + title: 'WebRTC SFU v1.6.65', html: `
diff --git a/public/js/RoomClient.js b/public/js/RoomClient.js index ec8f0305..d1de965f 100644 --- a/public/js/RoomClient.js +++ b/public/js/RoomClient.js @@ -9,7 +9,7 @@ * @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com - * @version 1.6.64 + * @version 1.6.65 * */ @@ -470,6 +470,8 @@ class RoomClient { }) .catch((error) => { console.error('Join error:', error); + //... + popupHtmlMessage(null, image.network, 'Join Room', error, 'center', '/', true); }); } @@ -688,14 +690,10 @@ class RoomClient { this.producerTransport.on('connect', async ({ dtlsParameters }, callback, errback) => { try { - const response = await this.socket.request('connectTransport', { + await this.socket.request('connectTransport', { transport_id: this.producerTransport.id, dtlsParameters, }); - if (!response.success) { - console.error('Producer Transport connection failed', response.error); - throw new Error(response.error); - } callback(); } catch (err) { console.error('Producer Transport connection error', err); @@ -797,14 +795,10 @@ class RoomClient { this.consumerTransport.on('connect', async ({ dtlsParameters }, callback, errback) => { try { - const response = await this.socket.request('connectTransport', { + await this.socket.request('connectTransport', { transport_id: this.consumerTransport.id, dtlsParameters, }); - if (!response.success) { - console.error('Consumer Transport connection failed', response.error); - throw new Error(response.error); - } callback(); } catch (err) { console.error('Consumer Transport connection error', err); @@ -2253,7 +2247,7 @@ class RoomClient { // https://mediasoup.discourse.group/t/create-server-side-consumers-with-paused-true/244 try { - const response = await this.socket.request('resumeConsumer', { consumer_id: consumer.id }); + const response = await this.socket.request('resumeConsumer', { consumer_id: consumer.id, type }); console.log('Consumer resumed', response); } catch (error) { console.error('Error resuming consumer', error); @@ -2276,31 +2270,20 @@ class RoomClient { } } catch (error) { console.error('Error in consume', error); + + popupHtmlMessage(null, image.network, 'Consume', error, 'center', '/', true); } } async getConsumeStream(producerId, peer_id, type) { const { rtpCapabilities } = this.device; - let data = {}; - - try { - data = await this.socket.request('consume', { - consumerTransportId: this.consumerTransport.id, - rtpCapabilities, - producerId, - type, - }); - - if (data.error) { - console.error('Error consuming producer:', data.error); - throw new Error(data.error); - } - - console.log('Consumer parameters received:', data); - } catch (err) { - console.error('Failed to consume:', err); - } + const data = await this.socket.request('consume', { + consumerTransportId: this.consumerTransport.id, + rtpCapabilities, + producerId, + type, + }); const { id, kind, rtpParameters } = data; const codecOptions = {};