사용법

<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 이벤트 (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",
}