WebSocket API 이용방법
PROBIT WebSocket API의 모든 메시지는 JSON 문자열로 교환됩니다.
요청 시 메시지 한 개 당 하나의 올바른 JSON 문자열을 전송해야 합니다.
WebSocket API 엔트리포인트는 wss://api.probit.kr/api/exchange/v1/ws
입니다.
Demo의 경우
wss://demo-api.probit.kr/api/exchange/v1/ws
요청하는 JSON 문자열의 각 키, 값 문자열은 큰따옴표로 묶여있어야 하고, 줄바꿈은 포함되지 않아야 합니다.
const ws = new WebSocket('wss://api.probit.kr/api/exchange/v1/ws');
ws.onopen = () => {
const msg = {
type: 'subscribe',
channel: 'marketdata',
interval: 500,
market_id: 'BTC-USDT',
filter: ['ticker', 'order_books_l0']
};
ws.send(JSON.stringify(msg));
};
ws.onmessage = (event) => {
console.log(event.data);
};
Channels
PROBIT WebSocket API를 사용하기 위해서는 각 채널을 구독해야합니다.
여러 채널을 동시에 구독할 수 있으며 사용 가능한 채널들은 아래와 같습니다.
marketdata
open_order
(인증 필요)trade_history
(인증 필요)order_history
(인증 필요)balance
(인증 필요)
각 채널 별 상세 정보는 API 레퍼런스를 참조하십시오.
채널을 구독할때는 "type":"subscribe"
메시지를, 해지할때는 "type":"unsubscribe"
메시지를 사용합니다. 또한 channel
필드를 통해 구독하고자 하는 채널의 이름을 명시해야합니다.
하나의 채널을 여러번 구독할 시 나중에 요청한 정보로 업데이트됩니다. (marketdata
의 경우 Marketdata 섹션 참조)
각 채널에 필요한 부가적인 필드가 있다면 같이 명시해야하며 채널별 필드는 API 레퍼런스에서 확인할 수 있습니다.
{"type":"subscribe","channel":"marketdata","market_id":"ETH-BTC","interval":100,"filter":["ticker","order_books_l0"]}
{"type":"unsubscribe","channel":"marketdata","market_id":"ETH-BTC"}
Authorization
인증이 필요한 채널을 구독하기 위해서는 채널 구독 요청 전에 "type":"authorization"
메시지로 먼저 인증을 마쳐야 합니다. token
필드에 Authorization API를 통해 업데이트 된 토큰을 명시합니다.
인증은 여러 채널을 구독하는 데에 사용될 수 있으며 연결이 해제될 때 까지 유지됩니다.
API 레퍼런스에서 자세한 정보를 확인할 수 있습니다.
{"type":"authorization","token":"USER_AUTHORIZE_TOKEN"}
{"type":"subscribe","channel":"order_history"}
{"type":"subscribe","channel":"trade_history"}
{"type":"unsubscribe","channel":"order_history"}
{"type":"unsubscribe","channel":"trade_history"}
Marketdata Channel
자세한 내용은 API 레퍼런스를 참고하십시오.
marketdata
채널은 인증이 필요하지 않은 public 채널입니다.
marketdata
를 여러 번 subscribe하더라도 각 market_id
별로 여러 번 구독하고 해제할 수 있습니다. 한 마켓을 여러 번 구독하는 경우 나중에 요청한 메시지를 기준으로 구독이 변경됩니다.
marketdata
채널을 구독하기 위해 필요한 인자로는 market_id
, interval
, filter
가 있습니다.
market_id
: 구독하고자 하는 마켓의 IDinterval
: 마켓 정보를 동기화하는 단위 시간(ms
)- 사용 가능한 단위: 100, 500
filter
: 마켓으로부터 받고자 하는 정보ticker
recent_trades
order_books
order_books_l0
는 모아보기가 적용되지 않으며 모아보기는 4단계로 제공됨order_books_l1
order_books_l2
order_books_l3
order_books_l4
{"type":"subscribe","channel":"marketdata","market_id":"ETH-BTC","interval":100,"filter":["ticker","recent_trades","order_books_l0","order_books_l1","order_books_l2","order_books_l3","order_books_l4"]}
{"type":"subscribe","channel":"marketdata","market_id":"ETH-USDT","interval":500,"filter":["ticker"]}
{"type":"subscribe","channel":"marketdata","market_id":"EOS-BTC","interval":100,"filter":["order_books_l0"]}
{"type":"subscribe","channel":"marketdata","market_id":"EOS-BTC","interval":100,"filter":["ticker"]}
{"type":"unsubscribe","channel":"marketdata","market_id":"ETH-USDT"}
{"type":"unsubscribe","channel":"marketdata","market_id":"EOS-BTC"}
Updated 10 months ago