IK
Size: a a a
IK
AK
IK
IK
AK
AK
N
ТФ
B
N
ТФ
ТФ
SN
VK
IK
IK
IK
ТФ
const app = express();
const server = http.Server(app);
const io = socketIO(server);
io.on("connection", (socket) => {
const { id } = socket;
console.log(`Socket connected: ${id}`);
const { roomName } = socket.handshake.query;
console.log(`Socket roomName: ${roomName}`);
socket.join(roomName);
socket.on("message-to-room", (msg) => {
console.log("msg ", msg);
msg.type = `room: ${roomName}`;
socket.to(roomName).emit("message-to-room", msg);
socket.emit("message-to-room", msg);
});
socket.on("disconnect", () => {
console.log(`Socket disconnected: ${id}`);
});
});
app.use((req, res, next) => {
req.io = io;
next();
});
router.post("/addComment", isAuthenticatedMiddleware, async (req, res) => {
const { io } = req;
const { bookId, comment } = req.body;
const { user: currentUser } = req.user;
const currentDate = new Date().toISOString();
try {
const book = await Book.findByIdAndUpdate(
{ _id: bookId },
{
$push: {
comments: { user: currentUser, text: comment, sentAt: currentDate },
},
},
{
new: true,
fields: {
comments: {
$slice: -1,
},
},
}
).populate({
path: "comments",
populate: { path: "user", select: "name" },
});
const newComment = book.comments[0];
io.emit("message-to-room", newComment);
res.send({
status: "ok",
});
} catch (err) {
console.log(err);
res.send({
status: "error",
});
}
});
module.exports = router;
OD
VK