본문으로 건너뛰기

클라이언트 API와 이벤트

기준: iosignal 5.2.x의 IOCore. 브라우저와 Node.js는 같은 핵심 API를 사용하지만 import 경로가 다릅니다.

환경가져오기
Node.jsimport { 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()리스너와 자원을 정리합니다. 인스턴스를 다시 사용하지 않습니다.
이벤트사용 시점
readyCID를 받고 통신 가능한 상태가 되었을 때. 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));

컴포넌트가 사라질 때 destroy()를 호출하세요. 실행 예제는 VanillaReact를 참고하세요.