-- 설치
npm install stayge-ws-client-sdk
import { getWebSocketClient, wsError } from "stayge-ws-client-sdk/react";
type Message = {
title: string;
body: string;
};
const ws = getWebSocketClient();
ws.connect({ url: "wss://dev.linc.fan/ws/linc" });
ws.onConnect(
callback: () => {
// connected
},
);
// 이벤트 핸들러는 connect 이전에 등록 가능, 여러번 호출해서 멀티 핸들러 등록 가능
ws.onMessage<Message>({
topic: "openchat/12345",
callback: (topic, payload) => {
// 서버에서 메시지가 수신되면 호출됨
// payload는 Message 타입으로 넘어오고 sdk에서 JSON.parse() 후에 핸들러에 넘겨줌
console.log(`Received: topic=${topic}, payload=${JSON.stringify(payload)}`);
},
});
ws.onDisconnect({
callback: () => {
// 서버와 연결이 끊어지면 호출됨
console.log(`onDisconnect`);
},
});
ws.onError({
callback: (error: wsError) => {
// 서버에서 에러가 리턴되면 호출됨, 현재는 구독 에러만 정의됨
if (error.code === "subscribeError") {
setSubscribedTopics((prev) => prev.filter((t) => t !== error.topic));
}
},
});
import { getWebSocketClient, wsError } from "stayge-ws-client-sdk/react-native";
type Message = {
title: string;
body: string;
};
const ws = getWebSocketClient();
ws.connect({ url: "wss://dev.linc.fan/ws/linc" });
ws.onConnect({
callback: () => {
setConnected(true);
},
});
// 이벤트 핸들러는 connect 이전에 등록 가능, 여러번 호출해서 멀티 핸들러 등록 가능
ws.onMessage<Message>({
topic: "openchat/12345",
callback: (topic, payload) => {
// 서버에서 메시지가 수신되면 호출됨
// payload는 Message 타입으로 넘어오고 sdk에서 JSON.parse() 후에 핸들러에 넘겨줌
console.log(`Received: topic=${topic}, payload=${JSON.stringify(payload)}`);
},
});
ws.onDisconnect({
callback: () => {
// 서버와 연결이 끊어지면 호출됨
console.log(`onDisconnect`);
},
});
ws.onError({
callback: (error: wsError) => {
// 서버에서 에러가 리턴되면 호출됨, 현재는 구독 에러만 정의됨
if (error.code === "subscribeError") {
setSubscribedTopics((prev) => prev.filter((t) => t !== error.topic));
}
},
});
https://staygelabs.github.io/stayge-ws-client-sdk/
stayge-ws-client-sdk/
├── package.json
├── tsconfig.json
├── tsup.config.ts
├── vite.config.ts
├── src/
│ ├── index.ts # 공통 진입점
│ ├── core/
│ ├── react/
│ └── react-native/
└── dist/ # 빌드 산출물 (tsup)
npm run build
deploy.patch.sh
gen-docs.sh