본문 바로가기
⚙️Backend/Node.js

[Node.js] Node.js 및 채팅기능 ( socket.io )

by Bㅐ추 2020. 6. 23.
728x90
반응형

개인 기록용 포스팅

공부용으로 적합하지 않음. 오로지 참고용.

node.js 는 https://nodejs.org/en/ 해당 사이트를 통해 다운로드할 수 있다.

  • LTS버전은 안정성과 보안성에 초점을 두고 릴리즈하는 버전임으로 서버 운영에 주로 사용하는 버전
  • Stable버전은 업데이트를 자주하며 기능 개발과 개선을 우선으로 하기에 개발에 주로 사용하는 버전

 

설치 후 커맨트 창에서 node --version 을 입력하여 노드가 잘 설치되어있는 지 확인.


🤷‍♂️Node.js란?

Node.js는 구글 크롬의 자바 크롬의 JavaScript 엔진(V8 Engine)으로 빌드 된 JavaScript 런타임(=프로그램이 구동되는 환경)이다. JavaScript는 일반적으로 크롬(Chrome)과 같은 브라우저에 내장되어 있다. 그래서 그 동안 JavaScript는 브라우저에 종속되어 있었다. 

위 스크린샷처럼 개발자 도구의 콘솔 탭을 열고 javascript 코드를 작성하면 잘 작동하는 모습을 볼 수 있다. 

모든 프로그래밍 언어가 그렇듯 javascript도 실행되려면 프로그래머가 작성한 javascript 코드를 기계가 해석할 수 있게 만드는 과정을 거쳐야 할텐데 브라우저에서 이게 왜 바로 실행되는걸까?

 

위에서 말씀드렸듯이, 브라우저에 javascript 엔진이 내장되어 있기 때문이다. 각 브라우저에 내장되어있는 javascript 엔진의 목록은 아래와 같다.

  • Chrome - Google v8
  • 넷스케이프 - Spider Monkey
  • Edge - Chakra
  • Safari - Javascript Core(JSC)

이처럼 javascript 엔진이 브라우저 자체에 내장되어 있기 때문에 파일로부터 로드된 javascript코드 뿐만이 아니라 console에서 직접 작성하는 javascript코드도 실행이 가능하다. 하지만 발전을 거듭나면서 이 javascript를 브라우저가 아닌 브라우저 밖에서 실행할 수 있게 되었다.

 

JavaScript를 크롬(Chrome)같은 브라우저에서만 쓰는 것이 아닌 브라우저 밖. 즉, 내 컴퓨터에서 다양한 용도로 확장하기 위해 만들어진 것이 바로 Node.js이다.  Node.js를 이용하면 Python과 같이 내 컴퓨터에서 File System를 이용할 수 있고, 서버를 만들 수도 있고 크롤링도 할 수 있다. JavaScript도 Python과 같은 프로그래밍 언어이기 때문이다.

Node.js를 이용하여 Express같은 라이브러리를 이용해서 서버를 만들곤 하지만, Node.js 자체는 웹서버가 아니다. 위에 말씀드렸다싶이 Node.js는 자바스크립트 런타임(JavaScript Runtime)으로 Node.js는 웹 서버를 만들 수 있는 하나의 방법에 불과하다.

 

다음과 같은 경우에 Node.js를 사용할 경우 좋은 효율성을 발휘할 수 있다.

  • 알림이나 실시간 대화같이 같이 데이터의 실시간 처리가 필요한 애플리케이션
  • 사용자의 입력과 출력이 잦은 애플리케이션
  • 데이터 스트리밍 애플리케이션
  • JSON API기반의 애플리케이션
  • 단일 페이지 기반의 애플리케이션

🤷‍♂️npm?

npm은 Node Package Manager의 약어로 JavaScript를 위한 패키지 관리자이다.  node.js에서 사용하는 모듈들을 패키지로 만들어 npm을 통하여 관리하고 배포하고 있다.

 

이게 무엇을 의미하냐면, 다른 사람이 잘 만들어놓은 모듈들을 npm을 통하여 설치하여 사용이 가능하다는 점이다. 또한 이 모듈이 사용하고있는 다른 모듈의 의존성또한 자동으로 해결해준다.

어떻게?

npm install 이 명령어 한번으로 말이다.

 

npm install <package>

 

참고로 npm은 node.js와 함께 설치된다.

npm(Node Package Manager)은 npm이 처음에는 Node.js를 위한 패키지 매니저로 만들어졌기 때문에 이런 이름을 가지게 된 것이다. 모든 npm 패키지들은 package.json이라 불리는 파일안에 정의된다.  package.json의 내용은 항상 JSON으로 쓰여져야 한다. 적어도 두 개의 필드 name(프로젝트의 이름)과 version은 항상 존재해야 한다.

 

package.json 예시

{
"name" : "foo",
"version" : "1.2.3",
"description" : "A package for fooing things",
"main" : "foo.js",
"keywords" : ["foo", "fool", "foolish"],
"author" : "John Doe",
"licence" : "ISC"
}

 


🤷‍♂️Express JS?

Express JS(익스프레스 제이에스)는 웹사이트 개발을 위한 node.js용 framework이다. C#에 .Net이 있고, Java에 Spring이 있는 것 처럼 node.js에는 Express가 많이 사용되고 있다.

 


다음부터는 socket.io를 이용한 채팅 구현 내용이다. 참고용으로 잊어버리지 않게 기록한 것 이므로 자세한 내용은 구글링(..)

🤷‍♂️socket.io 란?

socket.io란 실시간으로 상호작용하는 웹 서비스를 만드는 기술인 웹소켓을 쉽게 사용할 수 있게 해주는 모듈 이다.

👩‍💻준비사항

package.json을 생성하고 모듈 2개(express, socket.io)를 설치.

npm init
npm install express --save
npm install socket.io --save

 

👩‍💻 Client

다음과 같이 이클립스에서 socket.io를 사용할 수 있음.

메세지를 보낼 땐 socket.emit('send_message',{key:value,...})

메세지를 받을 땐 socket.on('receive_message',function(data){...})

 

👩‍💻 Server

 


출처:

 https://geonlee.tistory.com/92

https://agramar.tistory.com/17

728x90
반응형

'⚙️Backend > Node.js' 카테고리의 다른 글

1. Intro  (0) 2020.11.28
0. 설치  (0) 2020.11.27
[Node.js] oracle db 연동  (0) 2020.06.01