node.js + socket.io 간단한 멀티채팅
Node.js를 작년에 잠깐 맛만 봤다가 안했는데 지금 다시 만져보려니까 답도없다
기억이 전혀안남, 감조차 없음. 사실 한것도 별로 없지만..
그래서 해본거라도 남겨야겠다
우선 대충 아래그림과 같은거다
node.js 에는 socket.io라는게 있어서 다른걸로 만드는과정보다 굉장히 간단하게 만들어진다
우선 파일 구성은 이렇다
index.html -- 로그인하는 화면
room.html -- 대화하는 화면
talk.js -- 서버
index.html화면은 form에 이름을 입력하고 submit하면 /room으로 넘겨주는 형식
room.html의 html코드
room.html 의 script코드
135 : 스크립트가 시작이 되면 소켓이 열림
137 : enter the user 라는 메서드명으로 호출이오면 실행됨
140 : SEND 버튼을 클릭하면 실행
144 : msgObj와 함께 send message 라는 메서드를 실행하도록 요청
149 : receive message 라는 메서드명으로 호출이오면 실행됨
155 : textarea에서 엔터칠때 메시지를 넘기고, shift+enter로 멀티라인 입력하기위한 코드
talk.js 에서 사용하는 모듈
body-parser를 사용해서 html파일에서 post방식으로 넘겨주는 파라미터를 받을수 있음
talk.js코드
10 : 닉네임을 저장할 변수
12 : get 방식 /index 요청이 올 경우 views/index.html을 띄움
16 : post 방식 /room 요청이 올 경우 nknm 변수에 닉네임을 저장하고 views/room.html을 띄움
21 : view단에서 소켓이 열리면 실행
22 : 입장한 해당 소켓아이디로 enter the user라는 메서드명과 함께 닉네임을 보냄
23 : send message라는 호출이 올경우 넘어온 파라미터와 함께
24 : 현재 연결된 모든 사용자에게 receive message라는 메서드를 호출하도록 함
31 : 연결이 끊어졌을 경우 실행
view와 서버가 서로 호출하는 것만 한번 보면 응용해서 계속 써먹으면 될것같다
(너무 어수선하게 작성한것같아서 css가 포함된 전체코드 파일은 따로 첨부함)