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>