인증
웹소켓은 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와 같이 유니크한 값의 사용을 권장하고 있습니다.
필드명 | 타입 | 내용 | 필수 여부 |
---|---|---|---|
ticket | String | 요청자를 식별 할 수 있는 값 | O |
Type Field
수신하고 싶은 시세 정보를 나열하는 필드로 하나의 요청에 `type field` 는 여러 개를 명시할 수 있습니다.
자세한 요청 방법은 타입별 요청 및 응답 을 확인하시길 바랍니다.
is_only_snapshot
, is_only_realtime
필드는 생략 가능하며 모두 생략할 경우 스냅샷과 실시간 데이터 둘 다 수신합니다.
Format Field
트래픽 부담이 클 때 사용하는 방법으로 `simple` 로 지정할 경우 응답 필드명이 간소화됩니다.
필드명 | 타입 | 내용 | 필수 여부 | 기본 값 |
---|---|---|---|---|
format | String | 수신할 포맷 - DEFAULT : 기본형- SIMPLE : 축약형 | X | DEFAULT |