From 126ed222729047c34358fac75924a4410c922a06 Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Tue, 1 Jul 2025 17:55:53 +0200 Subject: [PATCH] [mirotalksfu] - update dep, email alert if worker died (optional) --- app/src/Server.js | 10 +++- app/src/lib/nodemailer.js | 46 ++++++++++++++++++- cloud/package.json | 2 +- package.json | 10 ++-- public/js/Brand.js | 2 +- public/js/Room.js | 4 +- public/js/RoomClient.js | 2 +- .../client-server-axios/server/package.json | 2 +- .../client-server-socket/server/package.json | 2 +- rtmpServers/node-media-server/package.json | 2 +- 10 files changed, 66 insertions(+), 16 deletions(-) diff --git a/app/src/Server.js b/app/src/Server.js index 8ccedc74..ab3f5742 100644 --- a/app/src/Server.js +++ b/app/src/Server.js @@ -1573,8 +1573,14 @@ function startServer() { } worker.on('died', () => { - log.error('Mediasoup worker died, exiting in 2 seconds...', worker.pid); - setTimeout(() => process.exit(1), 2000); + log.error('Mediasoup worker died, exiting in 5 seconds...', worker.pid); + + nodemailer.sendEmailAlert('alert', { + subject: 'Worker Died', + body: `The Worker with PID ${worker.pid} has died unexpectedly!`, + }); + + setTimeout(() => process.exit(1), 5000); }); workers.push(worker); diff --git a/app/src/lib/nodemailer.js b/app/src/lib/nodemailer.js index e8a9cce5..3496b55b 100644 --- a/app/src/lib/nodemailer.js +++ b/app/src/lib/nodemailer.js @@ -61,7 +61,11 @@ function sendEmailAlert(event, data) { subject = getJoinRoomSubject(data); body = getJoinRoomBody(data); break; - // ... + case 'alert': + subject = getAlertSubject(data); + body = getAlertBody(data); + break; + //... default: break; } @@ -143,6 +147,46 @@ function getJoinRoomBody(data) { `; } +function getAlertSubject(data) { + const { subject } = data; + return subject || 'MiroTalk SFU - Alert'; +} + +function getAlertBody(data) { + const { body } = data; + + const currentDataTime = getCurrentDataTime(); + + return ` +

🚨 Alert Notification

+ + + + + + + + + + +
⚠️ Alert${body}
🕒 Date, Time${currentDataTime}
+ `; +} + // #################################################### // UTILITY // #################################################### diff --git a/cloud/package.json b/cloud/package.json index 05b92540..c6ffb7db 100644 --- a/cloud/package.json +++ b/cloud/package.json @@ -20,6 +20,6 @@ "sanitize-filename": "^1.6.3" }, "devDependencies": { - "nodemon": "^3.1.9" + "nodemon": "^3.1.10" } } diff --git a/package.json b/package.json index 94431e9e..d04c1043 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mirotalksfu", - "version": "1.8.75", + "version": "1.8.76", "description": "WebRTC SFU browser-based video calls", "main": "Server.js", "scripts": { @@ -57,11 +57,11 @@ "node": ">=18" }, "dependencies": { - "@aws-sdk/client-s3": "^3.839.0", - "@aws-sdk/lib-storage": "^3.839.0", + "@aws-sdk/client-s3": "^3.840.0", + "@aws-sdk/lib-storage": "^3.840.0", "@mattermost/client": "10.8.0", "@ngrok/ngrok": "1.5.1", - "@sentry/node": "^9.33.0", + "@sentry/node": "^9.34.0", "async-mutex": "^0.5.0", "axios": "^1.10.0", "chokidar": "^4.0.3", @@ -83,7 +83,7 @@ "jsonwebtoken": "^9.0.2", "mediasoup": "3.16.2", "mediasoup-client": "3.12.2", - "nodemailer": "^7.0.3", + "nodemailer": "^7.0.4", "openai": "^5.8.2", "qs": "6.14.0", "sanitize-filename": "^1.6.3", diff --git a/public/js/Brand.js b/public/js/Brand.js index 10255f62..f0b0e5ae 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.75', + title: 'WebRTC SFU v1.8.76', html: `