From 4d8c79522b623d0564064f9557f07bae13179864 Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Thu, 12 Jun 2025 18:01:49 +0200 Subject: [PATCH] [mirotalksfu] - #200 refactor socket.io, update dep --- app/src/Room.js | 3 +- app/src/Server.js | 17 ++- package.json | 8 +- public/js/Brand.js | 2 +- public/js/Room.js | 28 +++- public/js/RoomClient.js | 330 +++++++++++++++++++++------------------- public/views/Room.html | 6 +- 7 files changed, 223 insertions(+), 171 deletions(-) diff --git a/app/src/Room.js b/app/src/Room.js index 3358b134..a392af26 100644 --- a/app/src/Room.js +++ b/app/src/Room.js @@ -651,6 +651,7 @@ module.exports = class Room { }); const { peer_name } = peer; + const { iceConsentTimeout = 35 } = this.webRtcTransport; transport.observer.on('newproducer', (producer) => { log.debug('---> new producer created [id:%s]', producer.id); @@ -678,7 +679,7 @@ module.exports = class Room { log.warn(`Closing transport ${transport.id} due to prolonged ICE disconnection`); transport.close(); } - }, 5000); // Wait 5 seconds before closing + }, iceConsentTimeout * 1000); // Wait iceConsentTimeout seconds before closing } else if (iceState === 'closed') { log.warn(`ICE state closed for transport ${transport.id}`); transport.close(); diff --git a/app/src/Server.js b/app/src/Server.js index 61e57509..2ceb67c5 100644 --- a/app/src/Server.js +++ b/app/src/Server.js @@ -64,7 +64,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.8.63 + * @version 1.8.64 * */ @@ -1742,6 +1742,21 @@ function startServer() { return cb('isBanned'); } + // Remove old peer with same socket.id before adding new one + const existingPeer = room.getPeer(socket.id); + if (existingPeer) { + room.removePeer(socket.id); + } + + // If you want to check by peer_uuid as well, you can do: + if (peer_uuid) { + for (const peer of room.getPeers()) { + if (peer.peer_info?.peer_uuid === peer_uuid) { + room.removePeer(peer.id); + } + } + } + room.addPeer(new Peer(socket.id, data)); const activeRooms = getActiveRooms(); diff --git a/package.json b/package.json index af546db1..3d7fac71 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mirotalksfu", - "version": "1.8.63", + "version": "1.8.64", "description": "WebRTC SFU browser-based video calls", "main": "Server.js", "scripts": { @@ -57,11 +57,11 @@ "node": ">=18" }, "dependencies": { - "@aws-sdk/client-s3": "^3.826.0", - "@aws-sdk/lib-storage": "^3.826.0", + "@aws-sdk/client-s3": "^3.828.0", + "@aws-sdk/lib-storage": "^3.828.0", "@mattermost/client": "10.8.0", "@ngrok/ngrok": "1.5.1", - "@sentry/node": "^9.28.0", + "@sentry/node": "^9.28.1", "async-mutex": "^0.5.0", "axios": "^1.9.0", "chokidar": "^4.0.3", diff --git a/public/js/Brand.js b/public/js/Brand.js index 7666d0cd..5aa86454 100644 --- a/public/js/Brand.js +++ b/public/js/Brand.js @@ -64,7 +64,7 @@ let BRAND = { }, about: { imageUrl: '../images/mirotalk-logo.gif', - title: 'WebRTC SFU v1.8.63', + title: 'WebRTC SFU v1.8.64', html: `