클라이언트 API와 이벤트
기준: iosignal 5.2.x의 IOCore. 브라우저와 Node.js는 같은 핵심 API를 사용하지만 import 경로가 다릅니다.
| 환경 | 가져오기 |
|---|---|
| Node.js | import { IO } from 'iosignal' |
| 브라우저 번들러 | import IO from 'iosignal/browser/esm/io.js' |
new IO('ws://localhost:7777')로 생성합니다. URL에는 서버의 WebSocket 주소를 사용합니다.
| 메서드 | 용도 |
|---|---|
listen(tag, handler) | 태그의 핸들러와 채널 구독을 등록합니다. 준비 상태에서 구독이 전송됩니다. |
subscribe(tag) / unsubscribe(tag) | 구독을 직접 전송하거나 해제합니다. 직접 구독은 ready 이후에 호출하세요. |
signal(tag, ...args) / publish(tag, ...args) | 태그로 메시지를 전송합니다. |
auth(id, key) / login(id, key) | 인증 정보를 설정하거나 현재 연결에서 로그인합니다. 인증 참조. |
call(target, topic, ...args) | 서버 서비스 요청을 전송하고 응답 Promise를 받습니다. |
open(url?) | 연결을 열거나 다시 엽니다. |
stop() | 자동 재연결을 끄고 연결을 종료합니다. 나중에 다시 열 수 있습니다. |
destroy() | 리스너와 자원을 정리합니다. 인스턴스를 다시 사용하지 않습니다. |
| 이벤트 | 사용 시점 |
|---|---|
ready | CID를 받고 통신 가능한 상태가 되었을 때. io.cid를 읽거나 직접 subscribe합니다. |
change | 상태 이름이 바뀌었을 때. UI의 연결 상태를 갱신합니다. |
message | 수신한 태그와 페이로드를 공통으로 처리할 때. |
error | 연결 또는 처리 오류를 표시할 때. |
| 태그 이름 | listen(tag, handler)로 등록한 태그의 메시지를 처리할 때. |
io.listen('room#chat', (tag, message) => console.log(tag, message));
io.on('ready', () => console.log(io.cid));
io.on('change', state => console.log(state));