BinanceのAPIドキュメントは次
Change Log – Binance API Documentation
そのなかにWebsocket Market Streamsという項目がある。
またRealtime APIというワードを使ったがBinanceではWebsocketとあるだけでリアルタイムという単語は使用されない。
今回はこちらに接続してみたい。
今回はBinanceのWebsocket APIに接続しデータが取得するところまでを目標とする。
データの詳しい項目までは見ない。
本日もNode.jsを使用する。基本的なプロジェクトの立ち上げ方などは解説しない。
Websocketの接続にはBitMEX同様ws
というパッケージを利用する。
ws
インストール用のコマンドは次
npm install ws
基本はBitMEXとほぼ同様のコードで動作する。
まずは今回私が書いたコード
import ws from 'ws'
const socket = new ws('wss://stream.binance.com:9443/ws')
socket.on('open', () => {
console.log("Connected.")
socket.send(JSON.stringify(
{
"method": "SUBSCRIBE",
"params":
[
"btcusdt@aggTrade"
],
"id": 1
}
));
})
socket.on('message', (data) => {
console.log(`---- Message -----`)
console.log(JSON.parse(data))
});
socket.on('close', (code) => {
console.log(code)
})
socket.on('error', (e) => {
console.log(e)
})
socket.on('unexpected-response', (request, response) => {
console.log(`unexpected-response: ${request}, ${response}`)
})
アカウントの認証なしでも接続できる。
次のようなメッセージが流れてくる。目視では確認できない量である。
{
e: 'aggTrade',
E: 1597823268133,
s: 'BTCUSDT',
a: 357021403,
p: '11791.49000000',
q: '0.04648600',
f: 389181059,
l: 389181059,
T: 1597823268131,
m: true,
M: true
}
メッセージの内容や受信するチャンネルの種類については今回は考慮しない。
接続とデータが取得できたので今回は完了。
基本は前回のBitMEXで使用したコードではあるが、少し間違えやすい箇所を解説しておく。
公式では
wss://stream.binance.com:9443
こちらに接続するよう書いてあるが、実際のコードにはアドレスに/ws
を付与して
const socket = new ws('wss://stream.binance.com:9443/ws')
上のようにしなければ正しく接続できない。
※そうしないとunexpected-response
のイベントが発生する。
socket.send(JSON.stringify(
{
"method": "SUBSCRIBE",
"params":
[
"btcusdt@aggTrade"
],
"id": 1
}
));
こちらは公式の冒頭にある送信データのサンプル。
params
の配列に複数のchを記載して同時に複数のデータを受信できる。
通貨ペア@データの種類
で指定する模様。
BitMEX同様JSON
形式で要求すれば良いようなのでJSON.stringify
を使う。
本日はこれだけ。
とりあえずデータが取得できたので良い。
実際にデータを使用していく場合は中身の理解が必要なので次回はもう少し深堀りしてみたい。