Working
This commit is contained in:
parent
d8146c3723
commit
abdffe2e7a
7 changed files with 1184 additions and 51 deletions
68
server.js
68
server.js
|
@ -1,27 +1,71 @@
|
|||
const io = require("socket.io")(3000, {
|
||||
const express = require("express")
|
||||
const app = express()
|
||||
const server = require("http").Server(app)
|
||||
const io = require("socket.io")(server, {
|
||||
cors: {
|
||||
origin: [
|
||||
"http://localhost:5500",
|
||||
"http://127.0.0.1:5500",
|
||||
"http//192.168.1.226:5500",
|
||||
"http//192.168.1.226:5500",
|
||||
],
|
||||
},
|
||||
})
|
||||
|
||||
const users = {}
|
||||
app.set("views", "./views")
|
||||
app.set("view engine", "ejs")
|
||||
app.use(express.static("public"))
|
||||
app.use(express.urlencoded({ extended: true }))
|
||||
|
||||
const getUserRooms = (socket) =>
|
||||
Object.entries(rooms).reduce((names, [name, room]) => {
|
||||
if (room.users[socket.id] != null) names.push(name)
|
||||
return names
|
||||
}, [])
|
||||
|
||||
const rooms = {}
|
||||
|
||||
app.get("/", (_, res) => {
|
||||
res.render("index", { rooms: rooms })
|
||||
})
|
||||
|
||||
app.post("/room", (req, res) => {
|
||||
if (rooms[req.body.room] != null) {
|
||||
return res.redirect("/")
|
||||
}
|
||||
rooms[req.body.room] = { users: {} }
|
||||
res.redirect(req.body.room)
|
||||
io.emit("room-created", req.body.room)
|
||||
})
|
||||
|
||||
app.get("/:room", (req, res) => {
|
||||
if (rooms[req.params.room] == null) {
|
||||
return res.redirect("/")
|
||||
}
|
||||
res.render("room", { roomName: req.params.room })
|
||||
})
|
||||
|
||||
server.listen(3000)
|
||||
|
||||
io.on("connection", (socket) => {
|
||||
socket.on("new-user", (name) => {
|
||||
users[socket.id] = name
|
||||
socket.broadcast.emit("user-connected", name)
|
||||
socket.on("new-user", (room, name) => {
|
||||
socket.join(room)
|
||||
rooms[room].users[socket.id] = name
|
||||
socket.broadcast.to(room).emit("user-connected", name)
|
||||
})
|
||||
|
||||
socket.on("send-chat-message", (message) =>
|
||||
socket.broadcast.emit("chat-message", message, users[socket.id])
|
||||
socket.on("send-chat-message", (room, message) => {
|
||||
socket.broadcast
|
||||
.to(room)
|
||||
.emit("chat-message", message, rooms[room].users[socket.id])
|
||||
})
|
||||
|
||||
socket.on("disconnect", () =>
|
||||
getUserRooms(socket).forEach((room) => {
|
||||
socket.broadcast
|
||||
.to(room)
|
||||
.emit("user-disconnected", rooms[room].users[socket.id])
|
||||
delete rooms[room].users[socket.id]
|
||||
})
|
||||
)
|
||||
|
||||
socket.on("disconnect", () => {
|
||||
socket.broadcast.emit("user-disconnected", users[socket.id])
|
||||
delete users[socket.id]
|
||||
})
|
||||
})
|
||||
|
|
Reference in a new issue