Skip to content

Commit b4fda04

Browse files
authored
refactored binance symbol stream limit (#769)
- to apply to all websocket streams
1 parent 0062139 commit b4fda04

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/ExchangeSharp/API/Exchanges/BinanceGroup/BinanceGroupCommon.cs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ protected async Task<string> GetWebSocketStreamUrlForSymbolsAsync(string suffix,
3232
{
3333
marketSymbols = (await GetMarketSymbolsAsync()).ToArray();
3434
}
35+
if (marketSymbols.Length > 400)
36+
{
37+
marketSymbols = marketSymbols.Take(400).ToArray();
38+
Logger.Warn("subscribing to the first 400 symbols"); // binance does not allow subscribing to more than 400 symbols at a time
39+
}
3540

3641
StringBuilder streams = new StringBuilder("/stream?streams=");
3742
for (int i = 0; i < marketSymbols.Length; i++)
@@ -234,9 +239,15 @@ protected override async Task<IEnumerable<KeyValuePair<string, ExchangeTicker>>>
234239
return tickers;
235240
}
236241

237-
protected override Task<IWebSocket> OnGetTickersWebSocketAsync(Action<IReadOnlyCollection<KeyValuePair<string, ExchangeTicker>>> callback, params string[] symbols)
242+
protected override async Task<IWebSocket> OnGetTickersWebSocketAsync(Action<IReadOnlyCollection<KeyValuePair<string, ExchangeTicker>>> callback, params string[] symbols)
238243
{
239-
return ConnectPublicWebSocketAsync("/stream?streams=!ticker@arr", async (_socket, msg) =>
244+
string url = null;
245+
if (symbols == null || symbols.Length == 0)
246+
{
247+
url = "/stream?streams=!ticker@arr";
248+
}
249+
else url = await GetWebSocketStreamUrlForSymbolsAsync("@ticker", symbols);
250+
return await ConnectPublicWebSocketAsync(url, async (_socket, msg) =>
240251
{
241252
JToken token = JToken.Parse(msg.ToStringFromUTF8());
242253
List<KeyValuePair<string, ExchangeTicker>> tickerList = new List<KeyValuePair<string, ExchangeTicker>>();
@@ -275,11 +286,6 @@ protected override async Task<IWebSocket> OnGetTradesWebSocketAsync(Func<KeyValu
275286
{
276287
marketSymbols = (await GetMarketSymbolsAsync()).ToArray();
277288
}
278-
if (marketSymbols.Length > 400)
279-
{
280-
marketSymbols = marketSymbols.Take(400).ToArray();
281-
Logger.Warn("subscribing to the first 400 symbols"); // binance does not allow subscribing to more than 400 symbols at a time
282-
}
283289
string url = await GetWebSocketStreamUrlForSymbolsAsync("@aggTrade", marketSymbols);
284290
return await ConnectPublicWebSocketAsync(url, messageCallback: async (_socket, msg) =>
285291
{

0 commit comments

Comments
 (0)