website/backend/server.js

71 lines
2.3 KiB
JavaScript
Raw Permalink Normal View History

2024-02-08 14:07:13 +00:00
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}`);
});