mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-02-10 11:34:23 +01:00
✨ feat: implement AudioSocketModule and WebRTCHandler for audio streaming; refactor SocketIOService to support module-based event handling
This commit is contained in:
parent
77ca00c87b
commit
2eda62cf67
4 changed files with 292 additions and 156 deletions
|
|
@ -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')) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue