[OQI-008] feat: Initialize portfolio WebSocket service in server

- Import and initialize portfolioWebSocket in index.ts
- Add graceful shutdown for portfolioWebSocket
- Enable real-time portfolio updates via WebSocket

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Adrian Flores Cortes 2026-01-25 08:49:27 -06:00
parent 32a088698e
commit b0bfbe19ad

View File

@ -18,6 +18,12 @@ import { setupSwagger } from './config/swagger.config.js';
// WebSocket
import { wsManager, tradingStreamService } from './core/websocket/index.js';
// Background Jobs
import { distributionJob } from './modules/investment/jobs/index.js';
// Portfolio WebSocket
import { portfolioWebSocket } from './modules/portfolio/websocket/portfolio.websocket.js';
// Import routes
import { authRouter } from './modules/auth/auth.routes.js';
import { usersRouter } from './modules/users/users.routes.js';
@ -30,6 +36,7 @@ import { mlRouter } from './modules/ml/ml.routes.js';
import { llmRouter } from './modules/llm/llm.routes.js';
import { portfolioRouter } from './modules/portfolio/portfolio.routes.js';
import { agentsRouter } from './modules/agents/agents.routes.js';
import { notificationRouter } from './modules/notifications/notification.routes.js';
// Service clients for health checks
import { tradingAgentsClient, mlEngineClient, llmAgentClient } from './shared/clients/index.js';
@ -145,6 +152,7 @@ apiRouter.use('/ml', mlRouter);
apiRouter.use('/llm', llmRouter);
apiRouter.use('/portfolio', portfolioRouter);
apiRouter.use('/agents', agentsRouter);
apiRouter.use('/notifications', notificationRouter);
// Mount API router
app.use('/api/v1', apiRouter);
@ -161,6 +169,10 @@ const httpServer = createServer(app);
// Initialize WebSocket
wsManager.initialize(httpServer);
tradingStreamService.initialize();
portfolioWebSocket.initialize();
// Start background jobs
distributionJob.start();
// WebSocket stats endpoint
app.get('/api/v1/ws/stats', (req: Request, res: Response) => {
@ -183,6 +195,8 @@ httpServer.listen(PORT, () => {
// Graceful shutdown
const gracefulShutdown = () => {
logger.info('Shutting down gracefully...');
distributionJob.stop();
portfolioWebSocket.shutdown();
tradingStreamService.shutdown();
wsManager.shutdown();
httpServer.close(() => {