feat: implement AudioSocketModule and WebRTCHandler for audio streaming; refactor SocketIOService to support module-based event handling

This commit is contained in:
Marco Beretta 2025-04-05 10:37:53 +02:00
parent 77ca00c87b
commit 2eda62cf67
No known key found for this signature in database
GPG key ID: D918033D8E74CC11
4 changed files with 292 additions and 156 deletions

View file

@ -15,6 +15,7 @@ const { connectDb, indexSync } = require('~/lib/db');
const { isEnabled } = require('~/server/utils');
const { ldapLogin } = require('~/strategies');
const { logger } = require('~/config');
const { AudioSocketModule } = require('./services/Files/Audio/AudioSocketModule');
const { SocketIOService } = require('./services/WebSocket/WebSocketServer');
const validateImageRequest = require('./middleware/validateImageRequest');
const errorController = require('./controllers/ErrorController');
@ -30,6 +31,9 @@ const port = Number(PORT) || 3080;
const host = HOST || 'localhost';
const trusted_proxy = Number(TRUST_PROXY) || 1; /* trust first proxy by default */
let socketIOService;
let audioModule;
const startServer = async () => {
if (typeof Bun !== 'undefined') {
axios.defaults.headers.common['Accept-Encoding'] = 'gzip';
@ -49,7 +53,10 @@ const startServer = async () => {
}),
);
new SocketIOService(server);
socketIOService = new SocketIOService(server);
audioModule = new AudioSocketModule(socketIOService);
logger.info('WebSocket server and Audio module initialized');
await AppService(app);
@ -156,6 +163,19 @@ const startServer = async () => {
startServer();
process.on('SIGINT', () => {
logger.info('Shutting down server...');
if (audioModule) {
audioModule.cleanup();
logger.info('Audio module cleaned up');
}
if (socketIOService) {
socketIOService.shutdown();
logger.info('WebSocket server shut down');
}
process.exit(0);
});
let messageCount = 0;
process.on('uncaughtException', (err) => {
if (!err.message.includes('fetch failed')) {