Skip to content

Commit 7538f86

Browse files
committed
feat(v3.0.0-beta.16): add flag for public wsapi commands that do not require auth. add better message when keys are required but missing
1 parent c15a9c8 commit 7538f86

File tree

4 files changed

+38
-9
lines changed

4 files changed

+38
-9
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "binance",
3-
"version": "3.0.0-beta.15",
3+
"version": "3.0.0-beta.16",
44
"description": "Professional Node.js & JavaScript SDK for Binance REST APIs & WebSockets, with TypeScript & end-to-end tests.",
55
"main": "lib/index.js",
66
"types": "lib/index.d.ts",

src/websocket-api-client.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,8 @@ export class WebsocketAPIClient {
226226
return this.wsClient.sendWSAPIRequest(
227227
wsKey || WS_KEY_MAP.mainWSAPI,
228228
'ping',
229+
undefined,
230+
{ authIsOptional: true },
229231
);
230232
}
231233

@@ -238,6 +240,8 @@ export class WebsocketAPIClient {
238240
return this.wsClient.sendWSAPIRequest(
239241
wsKey || WS_KEY_MAP.mainWSAPI,
240242
'time',
243+
undefined,
244+
{ authIsOptional: true },
241245
);
242246
}
243247

@@ -252,6 +256,7 @@ export class WebsocketAPIClient {
252256
wsKey || WS_KEY_MAP.mainWSAPI,
253257
'exchangeInfo',
254258
params,
259+
{ authIsOptional: true },
255260
);
256261
}
257262

@@ -273,6 +278,7 @@ export class WebsocketAPIClient {
273278
wsKey || WS_KEY_MAP.mainWSAPI,
274279
'depth',
275280
params,
281+
{ authIsOptional: true },
276282
);
277283
}
278284

@@ -288,6 +294,7 @@ export class WebsocketAPIClient {
288294
wsKey || WS_KEY_MAP.mainWSAPI,
289295
'trades.recent',
290296
params,
297+
{ authIsOptional: true },
291298
);
292299
}
293300

@@ -303,6 +310,7 @@ export class WebsocketAPIClient {
303310
wsKey || WS_KEY_MAP.mainWSAPI,
304311
'trades.historical',
305312
params,
313+
{ authIsOptional: true },
306314
);
307315
}
308316

@@ -318,6 +326,7 @@ export class WebsocketAPIClient {
318326
wsKey || WS_KEY_MAP.mainWSAPI,
319327
'trades.aggregate',
320328
params,
329+
{ authIsOptional: true },
321330
);
322331
}
323332

@@ -333,6 +342,7 @@ export class WebsocketAPIClient {
333342
wsKey || WS_KEY_MAP.mainWSAPI,
334343
'klines',
335344
params,
345+
{ authIsOptional: true },
336346
);
337347
}
338348

@@ -348,6 +358,7 @@ export class WebsocketAPIClient {
348358
wsKey || WS_KEY_MAP.mainWSAPI,
349359
'uiKlines',
350360
params,
361+
{ authIsOptional: true },
351362
);
352363
}
353364

@@ -362,6 +373,7 @@ export class WebsocketAPIClient {
362373
wsKey || WS_KEY_MAP.mainWSAPI,
363374
'avgPrice',
364375
params,
376+
{ authIsOptional: true },
365377
);
366378
}
367379

@@ -381,6 +393,7 @@ export class WebsocketAPIClient {
381393
wsKey || WS_KEY_MAP.mainWSAPI,
382394
'ticker.24hr',
383395
params,
396+
{ authIsOptional: true },
384397
);
385398
}
386399

@@ -399,6 +412,7 @@ export class WebsocketAPIClient {
399412
wsKey || WS_KEY_MAP.mainWSAPI,
400413
'ticker.tradingDay',
401414
params,
415+
{ authIsOptional: true },
402416
);
403417
}
404418

@@ -418,6 +432,7 @@ export class WebsocketAPIClient {
418432
wsKey || WS_KEY_MAP.mainWSAPI,
419433
'ticker',
420434
params,
435+
{ authIsOptional: true },
421436
);
422437
}
423438

@@ -433,6 +448,7 @@ export class WebsocketAPIClient {
433448
wsKey || WS_KEY_MAP.mainWSAPI,
434449
'ticker.price',
435450
params,
451+
{ authIsOptional: true },
436452
);
437453
}
438454

@@ -448,6 +464,7 @@ export class WebsocketAPIClient {
448464
wsKey || WS_KEY_MAP.mainWSAPI,
449465
'ticker.book',
450466
params,
467+
{ authIsOptional: true },
451468
);
452469
}
453470

src/websocket-client.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ import { WSConnectedResult } from './util/websockets/WsStore.types';
6363

6464
const WS_LOGGER_CATEGORY = { category: 'binance-ws' };
6565

66+
export interface WSAPIRequestFlags {
67+
/** If true, will skip auth requirement for WS API connection */
68+
authIsOptional?: boolean | undefined;
69+
}
70+
6671
/**
6772
* Multiplex Node.js, JavaScript & TypeScript Websocket Client for all of Binance's available WebSockets.
6873
*
@@ -298,7 +303,8 @@ export class WebsocketClient extends BaseWebsocketClient<
298303
>(
299304
wsKey: TWSKey,
300305
operation: TWSOperation,
301-
...params: TWSParams extends void | never ? [] | [undefined] : [TWSParams]
306+
params?: TWSParams extends void | never ? undefined : TWSParams,
307+
requestFlags?: WSAPIRequestFlags,
302308
): Promise<TWSAPIResponse>;
303309

304310
async sendWSAPIRequest<
@@ -311,9 +317,12 @@ export class WebsocketClient extends BaseWebsocketClient<
311317
wsKey: WsKey,
312318
operation: TWSOperation,
313319
params: TWSParams & { signRequest?: boolean },
320+
requestFlags?: WSAPIRequestFlags,
314321
): Promise<TWSAPIResponse> {
315322
/**
316-
* Spot: https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/general-api-information
323+
* Spot:
324+
* -> https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/general-api-information
325+
* -> https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md#public-api-requests
317326
* USDM Futures: https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-api-general-info
318327
* COINM Futures: https://developers.binance.com/docs/derivatives/coin-margined-futures/websocket-api-general-info
319328
*/
@@ -326,12 +335,14 @@ export class WebsocketClient extends BaseWebsocketClient<
326335
await this.assertIsConnected(resolvedWsKey);
327336
// this.logger.trace('sendWSAPIRequest(): assertIsConnected(${wsKey}) ok');
328337

329-
// this.logger.trace('sendWSAPIRequest(): assertIsAuthenticated(${wsKey})...');
330-
await this.assertIsAuthenticated(resolvedWsKey);
338+
// Some commands don't require authentication.
339+
if (requestFlags?.authIsOptional !== true) {
340+
// this.logger.trace('sendWSAPIRequest(): assertIsAuthenticated(${wsKey})...');
341+
await this.assertIsAuthenticated(resolvedWsKey);
342+
// this.logger.trace('sendWSAPIRequest(): assertIsAuthenticated(${wsKey}) ok');
343+
}
331344
const timestampAfterAuth = Date.now();
332345

333-
// this.logger.trace('sendWSAPIRequest(): assertIsAuthenticated(${wsKey}) ok');
334-
335346
const request: WsRequestOperationBinance<string> = {
336347
id: this.getNewRequestId(),
337348
method: operation,
@@ -371,6 +382,7 @@ export class WebsocketClient extends BaseWebsocketClient<
371382
TWSAPIResponse & { request: any }
372383
>(resolvedWsKey, promiseRef, false);
373384

385+
// Enrich returned promise with request context for easier debugging
374386
deferredPromise.promise
375387
?.then((res) => {
376388
if (!Array.isArray(res)) {

0 commit comments

Comments
 (0)