[Node.js] Node.js 채팅방 제작[Node.js] Node.js 채팅방 제작
Posted at 2019. 2. 12. 00:44 | Posted in Node.js해당 채팅은 의 코드를 필자의 사용목적에 맞게 변경한 것이다.
-. 채팅방 기능 추가
-. 채팅방 입장기능 추가
-. 전역변수에 접속한 사용자 값을 담고 퇴장시 socket.io의 값을 대조하여 퇴장 이벤트 실행
(퇴장이벤트를 위해 사용하는데 실 운영시에는 DB 및 저장소 기능을 사용하는것을 권장한다.)
socket.chatting.app.js |
// 모듈을 추출한다. - http://localhost:52273 |
node_chatting.html |
<html> <head> <title>:: socket.io.chat ::</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" /> <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <script type="text/javascript" src="/socket.io/socket.io.js"></script> <script type="text/javascript"> // HTML 문서가 모두 준비되면 jQuery(document).ready(function() { var socket = io.connect(); // 채팅 창으로 접속 및 전환 jQuery("#startChatting").click(function() { socket.emit("access", { room : jQuery("#inputRoom").val() , name : jQuery("#inputName").val() }); location.href = "#chatpage"; jQuery("#roomName").html(jQuery("#inputRoom").val()); }); // 이벤트를 연결합니다. socket.on("message", function(data) { pushMessage(data.name, data.message, data.date); }); // 채팅방 접속 or 퇴장시 실행되는 알림 메세지 socket.on("contact", function(data) { jQuery("#userCount").html(data.count); pushMessage(data.name, data.message, new Date().toUTCString()); }); // 채팅 메시지를 전송한다. jQuery("#submit").click(function() { socket.emit("message", { room : jQuery("#inputRoom").val() , name : jQuery("#inputName").val() , message : jQuery("#inputMessage").val() , date : new Date().toUTCString() }); jQuery("#inputMessage").val(""); }); }); function pushMessage(pushName, pushMsg, pushDate) { // 입력할 문자 메시지 var output = ""; output += "<li>"; output += "<h3>" + pushName + "</h3>"; output += "<p>" + pushMsg + "</p>"; output += "<p>" + pushDate + "</p>"; output += "</li>"; // 문서 객체를 추가합니다. jQuery(output).prependTo("#content"); jQuery("#content").listview('refresh'); }; </script> </head> <body> <div data-role="page"> <div data-role="header"> <h1>Socket.io Chat</h1> </div> <div data-role="content"> <h3>입장할 방의 이름과 닉네임을 지정해 주세요</h3> <div data-role="fieldcontain"> <label for="textinput">방 이름</label> <input id="inputRoom" value=""/> </div> <div data-role="fieldcontain"> <label for="textinput">닉 네임</label> <input id="inputName" value=""/> </div> <input type ="button" id="startChatting" value="채팅 시작"/> </div> </div> <div data-role="page" id="chatpage"> <div data-role="header"> <h1> <span id="roomName"></span> : <span id="userCount">0</span> </h1> </div> <div data-role="content"> <input id="inputMessage" value=""/> <input type="button" id="submit" value="입력"/> <ul id="content" data-role="listview" data-inset="true"></ul> </div> </div> </body> </html> |
※ 위 설명에서 말한대로 모던 웹을 위한 Node.js 프로그래밍 코드의 내용을 바탕으로 만들었습니다.
실 서비스에서는 접속한 사용자의 값을 DB 및 따로 저장소를 만들어 운영하는것을 권장합니다.
※ 혹 개선의 여지가 있음을 아시는 분은 댓글로 남겨주시면 참고하겠습니다.
'Node.js' 카테고리의 다른 글
[Node.js] SCRAPING을 위한 cheerio 모듈과 cheerio-httpcli 모듈 (0) | 2019.05.08 |
---|---|
[Node.js] node.js로 PDF 문서 생성하기 (2) | 2019.04.11 |
[Node.js] package.json과 npm i 명령 (0) | 2019.04.02 |
[Node.js] PM2 프로세스 관리 도구 (0) | 2019.01.22 |
[Node.js] Ubuntu에 Node.js 설치하기 (0) | 2018.10.25 |