Page 552 - Nodejs 교과서 개정2판
P. 552

});
           				document.querySelector('#chat-form').addEventListener('submit',	function	(e)	{
           						e.preventDefault();
           						if	(e.target.chat.value)	{
           								axios.post('/room/{{room._id}}/chat',	{
           										chat:	this.chat.value,
           								})
           										.then(()	=>	{
           												e.target.chat.value	=	'';
           										})
           										.catch((err)	=>	{
           												console.error(err);
           										});
           						}
           				});
           		</script>
           {%	endblock	%}




         socketী chat ੉߮౟ ܻझցܳ ୶о೮णפ׮  chat ੉߮౟ח ଻౴ ݫद૑о ਢ ࣗ௄ਵ۽ ੹࣠ؼ ٸ ഐ୹ؾפ׮

           ଻౴ ݫद૑ ߊ࣠੗ data.user ী ٮۄ ղ ݫद૑ mine ௿ېझ ੋ૑ թ੄ ݫद૑ PUIFS ௿ېझ ੋ૑ ഛੋೠ റ
         Ӓী ݏѱ ۪؊݂೤פ׮  ଻౴ਸ ੹࣠ೞח ಬী submit ੉߮౟ ܻझցب ୶о೮णפ׮

         ଻౴਷ ৈ۞ о૑ ߑधਵ۽ ҳഅೡ ࣻ ੓णפ׮  അ੤ (*' ଻౴ߑ੄ ҃਋ীח ଻౴ ղਊਸ ؘ੉ఠ߬੉झী ੷੢

         ೞ޲۽ ۄ਋ఠܳ Ѣ஖ب۾ ࢸ҅೮णפ׮

         ੉ઁ ߑী ੽ࣘೞח ࠗ࠙җ ଻౴ਸ ೞח ࠗ࠙ਸ ٜ݅যࠁѷणפ׮


          routes/index.js
           ...
           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=허용	인원이	초과하였습니다.');
           				}
           				const	chats	=	await	Chat.find({	room:	room._id	}).sort('createdAt');
   547   548   549   550   551   552   553   554   555   556   557