인증

웹소켓은 Public과 Private으로 분류됩니다. Public은 별도의 인증 없이 데이터를 수신할 수 있지만, Private은 Websocket 연결 시 진행하는 인증에 성공한 경우에만 데이터를 수신할 수 있습니다.

  • REST API와 동일하게 Authorization 헤더를 통해 인증을 진행합니다.
  • 인증 헤더 만들기 를 확인하시기 바랍니다.

(예시) Header 에 인증 정보를 담아 Websocket 연결

const jwt = require("jsonwebtoken");
const {v4: uuidv4} = require('uuid');
const WebSocket = require("ws");

const accessKey = '발급받은 API KEY'
const secretKey = '발급받은 SECRET KEY'

const payload = {
    access_key: accessKey, 
    nonce: uuidv4(),
    timestamp: Date.now()
};

console.log(payload);

const jwtToken = jwt.sign(payload, secretKey);

const ws = new WebSocket("wss://ws-api.bithumb.com/websocket/v1/private", {
    headers: {
        authorization: `Bearer ${jwtToken}`
    }
});

ws.on("open", () => {
    console.log("connected!");
    // Request after connection
  
    ws.send('[{"ticket":"test example"},{"type":"myOrder","codes":["KRW-BTC"]}]');
});

ws.on("error", console.error);

ws.on("message", (data) => console.log(data.toString()));

ws.on("close", () => console.log("closed!"));

요청 포맷

연결이 완료되면 웹소켓 서버에 다양한 요청을 할 수 있습니다.
요청과 응답은 JSON Object를 이용합니다.

요청은 ticket field, type field, format field 로 분류되며 각각의 필드는 다음 요소로 구성되어 있습니다.

[
  {ticket field}
  , {type field}
         .
         .
         .
  , {type field}
  , {format field}
]

Ticket Field

요청자를 식별하기 위해 필요한 필드값으로 시세를 수신하는 대상을 식별하며 UUID와 같이 유니크한 값의 사용을 권장하고 있습니다.
필드명타입내용필수 여부
ticketString요청자를 식별 할 수 있는 값O

Type Field

수신하고 싶은 시세 정보를 나열하는 필드로 하나의 요청에 `type field` 는 여러 개를 명시할 수 있습니다.

자세한 요청 방법은 타입별 요청 및 응답 을 확인하시길 바랍니다.

is_only_snapshot, is_only_realtime 필드는 생략 가능하며 모두 생략할 경우 스냅샷과 실시간 데이터 둘 다 수신합니다.

Format Field

트래픽 부담이 클 때 사용하는 방법으로 `simple` 로 지정할 경우 응답 필드명이 간소화됩니다.
필드명타입내용필수 여부기본 값
formatString수신할 포맷
- DEFAULT: 기본형
- SIMPLE : 축약형
XDEFAULT