const express = require('express'); const mongoose = require('mongoose'); const authRoutes = require('./routes/auth'); // assuming auth.js is in the same directory const switRoutes = require('./routes/swit') const userRoutes = require('./routes/user') const notifyRoutes = require('./routes/notification') const session = require('express-session'); require('dotenv').config(); const http = require('http'); const { Server } = require('socket.io'); const dmRoutes = require('./routes/dm'); const app = express(); const port = process.env.PORT || 1989; const server = http.createServer(app); const io = new Server(server); app.io = io; app.onlineUsers = {}; io.on('connection', (socket) => { console.log('a user connected'); socket.on('user connected', (userId) => { console.log(`User ${userId} connected`); // log when a 'user connected' message is received app.onlineUsers[userId] = socket.id; console.log(app.onlineUsers); // log the current state of the `onlineUsers` object }); socket.on('disconnect', () => { console.log('user disconnected'); const userId = Object.keys(app.onlineUsers).find(key => app.onlineUsers[key] === socket.id); if (userId) delete app.onlineUsers[userId]; }); }); app.use(session({ secret: 'taylorswiftFEARLESSSPEAKNOWRED1989REPUTATIONLOVERfolkloreevermoreMIDNIGHTS', resave: false, saveUninitialized: false, })); mongoose.connect('mongodb://localhost:27017/switter', { useNewUrlParser: true, useUnifiedTopology: true, }); const db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function () { console.log('Connected to MongoDB'); }); app.use(express.json()); // This line is necessary to parse JSON request body app.use('/api/v1/app/auth', authRoutes); // Mount the auth routes at /auth app.use('/api/v1/app/swit', switRoutes); // Mount the swit routes at /swits app.use('/api/v1/app/user', userRoutes); // Mount the user routes at /user app.use('/api/v1/app/notify', notifyRoutes); // Mount the notify routes at /notify app.use('/api/v1/app/dms', dmRoutes); // Mount the dm routes at /dms' app.get('/', (req, res) => { res.send('Hello, World!'); }); server.listen(port, '0.0.0.0', () => { console.log(`Server is running on http://localhost:${port}`); });