Today I Learned

Socket.io를 이용한 채팅 서버 구축

c3epmos 2019. 12. 24. 22:05

socket.io

JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술이며 표준 기술이 아니고 Node.js 모듈이다.

socket.io의 응용 범위

그림과 같이, 실시간 분석이나 채팅과 같은 기능들에 사용된다. 

 

socket.io's functions

socket.on(eventName, callback) : 어떤 이벤트가 동작하면 callback 함수를 동작한다.

socket.leave(room[, callback]) : 어떤 방을 떠나고, callback 함수를 동작한다.

socket.to(room).emit(eventName[, …args][, ack]) : 어떤 room에 event를 socket으로 방출하는 함수이다. 다른 파라미터들도 포함될 수 있다. 

socket.of('/namespace') : socket을 '/namespace'로 지정하는 함수이다.

 

namespace와 room

namespace와 room은 소켓 통신 공간을 구별하기 위해 사용한다. 서버 측에서는 of function 을 호출함으로써 custom namespace를 설정할 수 있다. room은 namespace에서 나눠진 socket들을 또 나눌 수 있다. socket.leave(), socket.join()으로 사용한다.

소켓 공간 구성도

 

구현 방법

1
npm install socket.io

npm을 이용해서 설치할 수 있다. 소스 코드는 다음과 같다.

위의 코드는 실제 로직을 구현할 index.js 이다.

 

Future work

namespace와 room을 ID처럼 사용해 1 on 1 채팅 구현은 성공했지만, 실제 제공하고 있는 채팅 서비스처럼 DB에 연동해서 실시간으로 채팅을 처리할 필요성이 있다.

출처

https://medium.com/wasd

 

Node.js와 Socket.io를 이용한 채팅 구현 (1)

Socket.io?

medium.com

 

https://socket.io

 

Socket.IO — Server API

ServerExposed by require('socket.io'). new Server(httpServer[, options]) httpServer (http.Server) the server to bind to. options (Object) Works with and without new: const io = require('socke

socket.io