Page 548 - Nodejs 교과서 개정2판
P. 548
});
➋
router.get('/room/:id', async (req, res, next) => {
try {
const room = await Room.findOne({ _id: req.params.id });
const io = req.app.get('io');
if (!room) {
return res.redirect('/?error=존재하지 않는 방입니다.');
}
if (room.password && room.password !== req.query.password) {
return res.redirect('/?error=비밀번호가 틀렸습니다.');
}
const { rooms } = io.of('/chat').adapter;
if (rooms && rooms[req.params.id] && room.max <= rooms[req.params.id].length) {
return res.redirect('/?error=허용 인원을 초과했습니다.');
}
return res.render('chat', {
room,
title: room.title,
chats: [],
user: req.session.color,
});
} catch (error) {
console.error(error);
return next(error);
}
});
➌
router.delete('/room/:id', async (req, res, next) => {
try {
await Room.remove({ _id: req.params.id });
await Chat.remove({ room: req.params.id });
res.send('ok');
setTimeout(() => {
req.app.get('io').of('/room').emit('removeRoom', req.params.id);
}, 2000);
} catch (error) {
console.error(error);
next(error);
}
});
module.exports = router;