[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:
parent
32a088698e
commit
b0bfbe19ad
14
src/index.ts
14
src/index.ts
@ -18,6 +18,12 @@ import { setupSwagger } from './config/swagger.config.js';
|
|||||||
// WebSocket
|
// WebSocket
|
||||||
import { wsManager, tradingStreamService } from './core/websocket/index.js';
|
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 routes
|
||||||
import { authRouter } from './modules/auth/auth.routes.js';
|
import { authRouter } from './modules/auth/auth.routes.js';
|
||||||
import { usersRouter } from './modules/users/users.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 { llmRouter } from './modules/llm/llm.routes.js';
|
||||||
import { portfolioRouter } from './modules/portfolio/portfolio.routes.js';
|
import { portfolioRouter } from './modules/portfolio/portfolio.routes.js';
|
||||||
import { agentsRouter } from './modules/agents/agents.routes.js';
|
import { agentsRouter } from './modules/agents/agents.routes.js';
|
||||||
|
import { notificationRouter } from './modules/notifications/notification.routes.js';
|
||||||
|
|
||||||
// Service clients for health checks
|
// Service clients for health checks
|
||||||
import { tradingAgentsClient, mlEngineClient, llmAgentClient } from './shared/clients/index.js';
|
import { tradingAgentsClient, mlEngineClient, llmAgentClient } from './shared/clients/index.js';
|
||||||
@ -145,6 +152,7 @@ apiRouter.use('/ml', mlRouter);
|
|||||||
apiRouter.use('/llm', llmRouter);
|
apiRouter.use('/llm', llmRouter);
|
||||||
apiRouter.use('/portfolio', portfolioRouter);
|
apiRouter.use('/portfolio', portfolioRouter);
|
||||||
apiRouter.use('/agents', agentsRouter);
|
apiRouter.use('/agents', agentsRouter);
|
||||||
|
apiRouter.use('/notifications', notificationRouter);
|
||||||
|
|
||||||
// Mount API router
|
// Mount API router
|
||||||
app.use('/api/v1', apiRouter);
|
app.use('/api/v1', apiRouter);
|
||||||
@ -161,6 +169,10 @@ const httpServer = createServer(app);
|
|||||||
// Initialize WebSocket
|
// Initialize WebSocket
|
||||||
wsManager.initialize(httpServer);
|
wsManager.initialize(httpServer);
|
||||||
tradingStreamService.initialize();
|
tradingStreamService.initialize();
|
||||||
|
portfolioWebSocket.initialize();
|
||||||
|
|
||||||
|
// Start background jobs
|
||||||
|
distributionJob.start();
|
||||||
|
|
||||||
// WebSocket stats endpoint
|
// WebSocket stats endpoint
|
||||||
app.get('/api/v1/ws/stats', (req: Request, res: Response) => {
|
app.get('/api/v1/ws/stats', (req: Request, res: Response) => {
|
||||||
@ -183,6 +195,8 @@ httpServer.listen(PORT, () => {
|
|||||||
// Graceful shutdown
|
// Graceful shutdown
|
||||||
const gracefulShutdown = () => {
|
const gracefulShutdown = () => {
|
||||||
logger.info('Shutting down gracefully...');
|
logger.info('Shutting down gracefully...');
|
||||||
|
distributionJob.stop();
|
||||||
|
portfolioWebSocket.shutdown();
|
||||||
tradingStreamService.shutdown();
|
tradingStreamService.shutdown();
|
||||||
wsManager.shutdown();
|
wsManager.shutdown();
|
||||||
httpServer.close(() => {
|
httpServer.close(() => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user