Hello,

kok nae-ga ha-myun an-dweneun MAGIC...🧚

웹 프로그래밍/공부일지

[Node.js] 실시간 멀티 채팅 만들기 1탄

✿도담도담 2020. 2. 14. 18:11

Node.js라는 친구를 소개하고 멀티 채팅 구현글을 임시 저장해놓고 시간이 없다는 핑계로 일주일을 방치했더니

날아가버려서 다시 쓴다^^... 정리 잘해놨는데...

 

 

참고 블로그 - https://jinblog.kr/156

Socket.IO 문서 - https://socket.io/docs/

 

Node.js로 실시간 멀티채팅을 하기위해 뒤져보니 socket.io라는 친구가 필요했다.

socket.io가 뭐야? 하고 검색을 해보니 웹소켓을 기반으로 실시간 웹 기술을 모아 하나의 API로 만든 Node의 모듈이다.

브라우저와 웹 서버의 종류, 버전을 파악해 기술을 선택해서 브라우저의 호환성은 좋은듯 하다 :) 신기해

 

계속 이어서 또 웹 소켓에 대해 검색 해봤다. 

소켓을 검색 해보니 "응용 프로그램에서 TCP/IP를 이용하는 창구 역할을 하며

응용 프로그램과 소켓 사이의 인터페이스 역할" 이라고 설명 되어 있다.

전문용어로 어렵게 적혀 있으니 좀더 쉽게 풀이를 해보자😊 ( 남친찬스..ㅎㅎ )

우선 소켓이란 하드웨어의 네트워크카드를 쓸 수 있게 해주는 하나의 API이다.

네트워크 카드로 몇번포트로 들어오면 나한테 오게 해줘 하는 정보를 담은 캡슐화 된 데이터를 받아 소통해주는 친구인듯 하다.

그럼 웹 소켓은 이와 비슷한 일을 웹에서 해주는 친구다.

서버와 웹 브라우저가 TCP 통신을 통해 실시간으로 데이터를 주고 받을 수 있도록 해준다.


이제 socket.io에 대한 문서를 읽으면서 시작해보자 :-) 노드는 설치되어 있다는 가정하에 진행하겠다 ( 설치는 쉽다 )

매번 개발자들이 읽는 문서가 영어 영어한건 정말이지 화난다.

1. 첫번째로 프로젝트에 대한 정보가 담겨있는 package.json을 만들자.

npm init : 패키지 생성

해당 명령어 입력시 패키지명, 버전, 설명등 입력하면 된다. 만든 패키지는 npm list로 확인해 볼 수 있다.

나는 socket.io에의 예시를 그냥 그대로 입력했다...

 

2.  npm install express@4.15.2  express모듈 설치

나는 또 이게 socket인줄... 찾아보니 express는 "Node.js를 위한 빠르고 간편한 웹 프레임워크"라고 설명되어 있다.

express 설명 - https://www.npmjs.com/package/express/v/4.15.2

설치할때 "npm WARN socket-chat-example@0.0.1 No repository field." 이와 같은 에러가 나서 찾아보니 명령어 뒤에

-g를 붙여주어 어느 경로에서든 설치를 진행하게끔 하니 설치가 되었다.

조금 더 찾아보니 node엔 로컬 모듈, 전역 모듈이 있던데 -g 명령어가 전역모듈로 설치하도록 해주는것 같다.

 

3. 응용프로그램을 설정할 index.js파일을 만들어주자
var app = require('express')(); // express라는 모듈을 요청하여 http객체에 담아 핸들링
var http = require('http').createServer(app); // 서버 생성 및 제어


app.get('/', function(req, res){ // 웹 사이트를 방문시 호출 되는 경로 ( '/' )
  res.send('<h1>Hello world</h1>');
});

http.listen(3000, function(){ // http 서버가 포트 3000에서 수신 대기
  console.log('listening on *:3000');
});

해당 파일이 있는 경로로 이동해 실행 시켜준후 로컬에서 3000번 포트로 접속 해봤더니 

hello world가 나온다! 신기해! 그치만 아직 이해가 안돼...!ㅎ

너무 낯선 자바스크립트다...

 

서버
호출 결과

 

남는 시간에 짬짬히 해봤다...

이어서 멀티 채팅까지 조금씩 해봐야지 :) 신기한 자바스크립트다