본문으로 건너뛰기

Node.js IO Client

Node.js 용 IO 라이브러리를 사용하여 IOSignal 클라이언트 예제를 만들어봅니다.

사전준비

  • node.js 설치
  • npm , vscode 준비

프로젝트 폴더 준비

$ mkdir ioclient
$ cd ioclient
$ npm init -y
$ npm i iosignal

pacakge.json 수정

  • ESM 사용을 기본값으로 설정하기 위해 "type":"module", 을 추가합니다.
{
"name": "ioclient",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"iosignal": "^2.2.0"
}
}

Client 소스

이제 클라이언트 소스코드를 구현합니다.

  • node 용 IO 는 named export 를 사용하므로 { IO } 와 같이 이름을 명시하여 import 합니다.
  • IO생성시 서버주소를 명시해줍니다. 동일한 컴퓨터에서 port 7777 로 가동중인 서버에 접속하는 예제입니다.
// client.js

import { IO } from "iosignal"

const io = new IO('ws://localhost:7777')

let timer;

io.on('ready', () => {
console.log('ready cid:', io.cid)
timer = setInterval( publishMessage, 2000 )
});

io.on('error', err => {
console.log('err')
})

io.on('close', ()=>{
if(timer) clearInterval( timer )
})

const publishMessage = ()=>{
io.signal('channel#topic','message')
}

서버 만들기 페이지 에서 만든 서버 또는 CLI 프로그램 으로 서버를 우선 실행한 상태에서 client 를 실행해 봅니다.

$ node client.js
  • 서버가 미가동중인경우 err 가 출력됩니다.

브로커 서버가 실행중인 경우 아래와 유사한 출력이 뜹니다.

  • 1개의 클라이언트 접속 중이며 cid 와 state 가 보입니다.
  • 약 2초에 한번 클라이언트가 송신한 시그널 정보가 바이트 값으로 출력됩니다.

┌─────────┬───────────────┐
│ (index) │ Values │
├─────────┼───────────────┤
│ 0 │ '#3:?1jeZ(7)' │
└─────────┴───────────────┘
?1jeZ@ [SIGNAL] <Buffer d0 0d 63 68 61 6e 6e 65 6c 23 74 6f 70 69 63 01 6d 65 73 73 61 67 65 00>