Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
mohit-nagaraj committed Nov 10, 2024
1 parent 5ca34bd commit a606f84
Show file tree
Hide file tree
Showing 6 changed files with 252 additions and 31 deletions.
46 changes: 23 additions & 23 deletions server/index.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import express from 'express';
import cors from 'cors';
import dotenv from 'dotenv';
import { connectDB } from './db/connect.js';
import userRouter from './routes/userRoute.js';
import logger from './logger.js';
import chatRouter from './routes/chatRoute.js';
import messageRouter from './routes/messageRoute.js';
import authenticateToken from './utils/verify.js';
import https from 'https';
import fs from 'fs';
import express from "express";
import cors from "cors";
import dotenv from "dotenv";
import { connectDB } from "./db/connect.js";
import userRouter from "./routes/userRoute.js";
import logger from "./logger.js";
import chatRouter from "./routes/chatRoute.js";
import messageRouter from "./routes/messageRoute.js";
import authenticateToken from "./utils/verify.js";
import https from "https";
import fs from "fs";

// Read the SSL certificate and key
const privateKey = fs.readFileSync('ssl/server.key', 'utf8');
const certificate = fs.readFileSync('ssl/server.cert', 'utf8');
const privateKey = fs.readFileSync("ssl/server.key", "utf8");
const certificate = fs.readFileSync("ssl/server.cert", "utf8");

const credentials = { key: privateKey, cert: certificate };

Expand All @@ -26,24 +26,24 @@ app.use(cors());

connectDB();

app.use((req, res, next) => {
logger.info(`${req.method} ${req.url}`);
next();
app.use((req, res, next) => {
logger.info(`${req.method} ${req.url}`);
next();
});

app.get('/health', (req, res) => {
res.status(200).send('Server is running');
app.get("/health", (req, res) => {
res.status(200).send("Server is running");
});

app.use('/api/users', userRouter);
app.use("/api/users", userRouter);

//verify token: only below routes are protected
app.use(authenticateToken);

app.use('/api/chats', chatRouter);
app.use('/api/messages', messageRouter);
app.use("/api/chats", chatRouter);
app.use("/api/messages", messageRouter);

// Create HTTPS server with the credentials
https.createServer(credentials, app).listen(443, () => {
console.log('HTTPS Server running on port 443');
});
console.log("HTTPS Server running on port 443");
});
11 changes: 11 additions & 0 deletions socket/dbConfig/connect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import mongoose from "mongoose";

export const connectDB = async () => {
try {
const conn = await mongoose.connect(process.env.MONGO_URI);
console.log(`MongoDB Connected: ${conn.connection.host}`);
} catch (err) {
console.error(`Error: ${err.message}`);
process.exit(1);
}
};
23 changes: 15 additions & 8 deletions socket/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { Server } from "socket.io";
import https from "https";
import fs from "fs";
import express from "express";
import { connectDB } from "./dbConfig/connect";
import { User } from "./model/userSchema";

// Initialize an express app
const app = express();
Expand All @@ -23,28 +25,33 @@ const io = new Server(httpsServer, {
},
});

let onlineUsers = [];
// Connect to MongoDB
connectDB();

io.on("connection", (socket) => {
console.log("New connection", socket.id);

socket.on("addNewUser", (userId) => {
socket.on("addNewUser", async (userId) => {
console.log("New user", userId);
if (!onlineUsers.find((user) => user.userId === userId)) {
onlineUsers.push({ userId, socketId: socket.id });
const existingUser = await User.findOne({ userId });
if (!existingUser) {
const newUser = new User({ userId, socketId: socket.id });
await newUser.save();
}
const onlineUsers = await User.find();
console.log(onlineUsers);
io.emit("onlineUsers", onlineUsers);
});

socket.on("disconnect", () => {
socket.on("disconnect", async () => {
console.log("User disconnected", socket.id);
onlineUsers = onlineUsers.filter((user) => user.socketId !== socket.id);
await User.deleteOne({ socketId: socket.id });
const onlineUsers = await User.find();
io.emit("onlineUsers", onlineUsers);
});

socket.on("message", (data) => {
const user = onlineUsers.find((user) => user.userId === data.recipientId);
socket.on("message", async (data) => {
const user = await User.findOne({ userId: data.recipientId });
console.log("sending message", data, "to", user?.socketId);
if (user && user.socketId) {
io.to(user.socketId).emit("message", data);
Expand Down
8 changes: 8 additions & 0 deletions socket/model/userSchema.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { model, Schema } from "mongoose";

const userSchema = new Schema({
userId: String,
socketId: String,
});

export const User = model("User", userSchema);
Loading

0 comments on commit a606f84

Please sign in to comment.