<aside> <img src="/icons/checkmark-line_green.svg" alt="/icons/checkmark-line_green.svg" width="40px" />
참고
import { WebsocketClient } from "bybit-api";
import { env } from "@/lib/env";
export const wsClient = new WebsocketClient({
key: env.BYBIT_API_KEY,
secret: env.BYBIT_API_SECRET,
market: "v5",
});
let lastData: any = null;
wsClient.on("update", (data) => {
if (lastData && lastData.start !== data.data[0].start) {
console.log("-------------------------");
console.log(`open: ${lastData.open}`);
console.log(`close: ${lastData.close}`);
console.log(`high: ${lastData.high}`);
console.log(`low: ${lastData.low}`);
}
lastData = data.data[0];
});
wsClient.on("open", (data) => {
console.log("connection opened open:", data.wsKey);
});
wsClient.on("response", (data) => {
console.log("log response: ", JSON.stringify(data, null, 2));
});
wsClient.on("reconnect", ({ wsKey }) => {
console.log("ws automatically reconnecting.... ", wsKey);
});
wsClient.on("reconnected", (data) => {
console.log("ws has reconnected ", data?.wsKey);
});
// const topics = ["kline.5.XRPUSDT", "kline.5.BTCUSDT", "kline.5.ETHUSDT"];
const topics = ["kline.1.BTCUSDT"];
// wsClient.subscribeV5(topics, "spot");
wsClient.subscribeV5(topics, "linear");
update
이벤트는 1초마다 호출됨
data.data
[]의 start
와 end
필드가 바뀜. 이걸로 캔들 완성시점 알수 있음.kline.1.BTCUSDT
: BTCUSDT kline 정보를 1분 형태로 정보를 얻음update
이벤트 (kline.3.BTCUSDT
) res 값
{
topic: "kline.3.BTCUSDT",
data: [
{
start: 1727023860000,
end: 1727024039999,
interval: "3",
open: "62775.3",
close: "62789.6",
high: "62795",
low: "62770.6",
volume: "22.086",
turnover: "1386646.381",
confirm: false,
timestamp: 1727023952747,
}
],
ts: 1727023952747,
type: "snapshot",
wsKey: "v5LinearPublic",
}