@@ -14,6 +14,9 @@ import errorHandler from "./middleware/error-handler";
1414import attendeeRouter from "./services/attendee/attendee-router" ;
1515import staffRouter from "./services/staff/staff-router" ;
1616import checkinRouter from "./services/checkin/checkin-router" ;
17+ import dashboardRouter , {
18+ handleWs as handleWsDashboard ,
19+ } from "./services/dashboard/dashboard-router" ;
1720import authRouter from "./services/auth/auth-router" ;
1821import eventsRouter from "./services/events/events-router" ;
1922import notificationsRouter from "./services/notifications/notifications-router" ;
@@ -29,8 +32,13 @@ import leaderboardRouter from "./services/leaderboard/leaderboard-router";
2932
3033import cors from "cors" ;
3134import { JwtPayloadValidator } from "./services/auth/auth-models" ;
35+ import { createServer } from "http" ;
36+ import { WebSocketServer } from "ws" ;
3237
3338const app = express ( ) ;
39+ const server = createServer ( app ) ;
40+ const wss = new WebSocketServer ( { server } ) ;
41+
3442app . enable ( "trust proxy" ) ;
3543
3644// to prevent server-side caching/returning status code 200
@@ -84,6 +92,7 @@ app.use("/attendee", attendeeRouter);
8492app . use ( "/staff" , staffRouter ) ;
8593app . use ( "/auth" , authRouter ) ;
8694app . use ( "/checkin" , checkinRouter ) ;
95+ app . use ( "/dashboard" , dashboardRouter ) ;
8796app . use ( "/events" , eventsRouter ) ;
8897app . use ( "/leaderboard" , leaderboardRouter ) ;
8998app . use ( "/notifications" , notificationsRouter ) ;
@@ -113,10 +122,30 @@ app.use("/", (req, res) =>
113122
114123app . use ( errorHandler ) ;
115124
125+ // Websocket handling
126+ wss . on ( "connection" , ( ws , request ) => {
127+ try {
128+ if ( request . url === "/dashboard" ) {
129+ handleWsDashboard ( ws ) ;
130+ } else {
131+ ws . send ( "Unknown url" ) ;
132+ ws . close ( 1008 ) ; // 1008 = policy violation
133+ }
134+ } catch ( err ) {
135+ console . error ( "WebSocket connection handle issue:" , err ) ;
136+ ws . close ( 1008 ) ; // 1008 = policy violation
137+ }
138+ } ) ;
139+
140+ wss . on ( "error" , ( err ) => {
141+ console . error ( "WebSocket server issue:" , err ) ;
142+ } ) ;
143+
144+ // Start the server
116145if ( ! isTest ( ) ) {
117- app . listen ( Config . DEFAULT_APP_PORT , async ( ) => {
146+ server . listen ( Config . DEFAULT_APP_PORT , async ( ) => {
118147 process . send ?.( "ready" ) ;
119148 console . log ( "Server is listening on port 3000..." ) ;
120149 } ) ;
121150}
122- export default app ;
151+ export { app , server } ;
0 commit comments