Socket.io를 이용한 채팅 서버 구축
socket.io
JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술이며 표준 기술이 아니고 Node.js 모듈이다.
그림과 같이, 실시간 분석이나 채팅과 같은 기능들에 사용된다.
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
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