From 1f36006eb3855ed7088c31f51881b80d3bdf5cc0 Mon Sep 17 00:00:00 2001 From: Tassos Diamantidis Date: Thu, 13 Jan 2022 18:02:24 +0200 Subject: [PATCH] Bug fix: Websockets allMiniTickers (#531) --- index.d.ts | 3 +++ src/websocket.js | 21 ++++++++------------- test/index.js | 26 ++++++++++++++++++++++---- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/index.d.ts b/index.d.ts index db761e8b..62071cb2 100644 --- a/index.d.ts +++ b/index.d.ts @@ -659,6 +659,9 @@ declare module 'binance-api-node' { pair: string | string[], callback: (ticker: MiniTicker) => void, ) => ReconnectingWebSocketHandler + allMiniTickers: ( + callback: (ticker: MiniTicker[]) => void, + ) => ReconnectingWebSocketHandler futuresTicker: ( pair: string | string[], callback: (ticker: Ticker) => void, diff --git a/src/websocket.js b/src/websocket.js index 070986c2..12f11051 100644 --- a/src/websocket.js +++ b/src/websocket.js @@ -296,20 +296,15 @@ const miniTicker = (payload, cb, transform = true) => { cache.forEach(w => w.close(1000, 'Close handle was called', { keepClosed: true, ...options })) } -const allMiniTicker = (payload, cb, transform = true) => { - const cache = (Array.isArray(payload) ? payload : [payload]).map(() => { - const w = openWebSocket(`${endpoints.base}/!miniTicker@arr`) +const allMiniTickers = (cb, transform = true) => { + const w = openWebSocket(`${endpoints.base}/!miniTicker@arr`) - w.onmessage = msg => { - const arr = JSONbig.parse(msg.data) - cb(transform ? arr.map(m => miniTickerTransform(m)) : arr) - } - - return w - }) + w.onmessage = msg => { + const arr = JSONbig.parse(msg.data) + cb(transform ? arr.map(m => miniTickerTransform(m)) : arr) + } - return options => - cache.forEach(w => w.close(1000, 'Close handle was called', { keepClosed: true, ...options })) + return options => w => w.close(1000, 'Close handle was called', { keepClosed: true, ...options }) } const customSubStream = (payload, cb, variator) => { @@ -781,7 +776,7 @@ export default opts => { ticker, allTickers, miniTicker, - allMiniTicker, + allMiniTickers, customSubStream, user: user(opts), diff --git a/test/index.js b/test/index.js index 0e42aa4f..0f1c90bb 100644 --- a/test/index.js +++ b/test/index.js @@ -253,18 +253,36 @@ test('[WS] allTicker', t => { test('[WS] miniTicker', t => { return new Promise(resolve => { client.ws.miniTicker('ETHBTC', ticker => { - checkFields(t, ticker, ['open', 'high', 'low', 'eventTime', 'symbol', 'volume']) + checkFields(t, ticker, [ + 'open', + 'high', + 'low', + 'curDayClose', + 'eventTime', + 'symbol', + 'volume', + 'volumeQuote', + ]) resolve() }) }) }) -test('[WS] allMiniTicker', t => { +test('[WS] allMiniTickers', t => { return new Promise(resolve => { - client.ws.allMiniTicker('ETHBTC', tickers => { + client.ws.allMiniTickers(tickers => { t.truthy(Array.isArray(tickers)) t.is(tickers[0].eventType, '24hrMiniTicker') - checkFields(t, tickers[0], ['open', 'high', 'low', 'eventTime', 'symbol', 'volume']) + checkFields(t, tickers[0], [ + 'open', + 'high', + 'low', + 'curDayClose', + 'eventTime', + 'symbol', + 'volume', + 'volumeQuote', + ]) resolve() }) })