-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
84 lines (66 loc) · 1.89 KB
/
server.js
File metadata and controls
84 lines (66 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const express = require("express");
const http = require("http");
const socketio = require("socket.io");
const mongoose = require("mongoose");
const dotenv = require("dotenv");
const app = express();
const server = http.createServer(app);
const io = socketio(server);
dotenv.config({ path: ".env" });
const DB = process.env.MONGO_URI;
mongoose.connect(DB, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
mongoose.connection.on("connected", () => {
console.log("Connected to MongoDB");
});
const messageSchema = new mongoose.Schema({
username: String,
message: String,
});
const Message = mongoose.model("Message", messageSchema);
io.on("connection", (socket) => {
socket.on("join", (username) => {
socket.username = username;
});
// Create a new room and join it
socket.on("create-room", () => {
const roomID = generateRoomID(); // You can implement your own room ID generation logic
socket.join(roomID);
socket.emit("room-created", roomID);
});
// Join an existing room
socket.on("join-room", (roomID) => {
socket.join(roomID);
socket.emit("room-joined", roomID);
});
socket.on("message", (msg) => {
const message = new Message({
username: socket.username,
message: msg,
});
message.save();
io.to(socket.roomID).emit("message", {
username: socket.username,
message: msg,
});
});
socket.on("offer", (offer) => {
socket.to(socket.roomID).emit("offer", offer);
});
socket.on("answer", (answer) => {
socket.to(socket.roomID).emit("answer", answer);
});
socket.on("ice-candidate", (candidate) => {
socket.to(socket.roomID).emit("ice-candidate", candidate);
});
socket.on("disconnect", () => {
// Handle user disconnect and leave room
socket.leave(socket.roomID);
});
});
app.use(express.static("public"));
server.listen(3000, () => {
console.log("Listening on port 3000");
});