【发布时间】:2022-01-03 17:19:30
【问题描述】:
我正在使用Websocket.Client 获取所有市场代码流(文档here)。
但我不明白为什么每次 API 只返回不同数量的符号。
结果格式:
{
"e": "24hrTicker", // Event type
"E": 123456789, // Event time
"s": "BNBBTC", // Symbol
"p": "0.0015", // Price change
"P": "250.00", // Price change percent
"w": "0.0018", // Weighted average price
"x": "0.0009", // First trade(F)-1 price (first trade before the 24hr rolling window)
"c": "0.0025", // Last price
"Q": "10", // Last quantity
"b": "0.0024", // Best bid price
"B": "10", // Best bid quantity
"a": "0.0026", // Best ask price
"A": "100", // Best ask quantity
"o": "0.0010", // Open price
"h": "0.0025", // High price
"l": "0.0010", // Low price
"v": "10000", // Total traded base asset volume
"q": "18", // Total traded quote asset volume
"O": 0, // Statistics open time
"C": 86400000, // Statistics close time
"F": 0, // First trade ID
"L": 18150, // Last trade Id
"n": 18151 // Total number of trades
}
所以,我有一个
MarketTicker课程
public class MarketTicker
{
public string e { get; set; }
public long E { get; set; }
public string s { get; set; }
public string p { get; set; }
public string P { get; set; }
public string w { get; set; }
public string x { get; set; }
public string c { get; set; }
public string Q { get; set; }
public string b { get; set; }
public string B { get; set; }
public string a { get; set; }
public string A { get; set; }
public string o { get; set; }
public string h { get; set; }
public string l { get; set; }
public string v { get; set; }
public string q { get; set; }
public long O { get; set; }
public long C { get; set; }
public int F { get; set; }
public int L { get; set; }
public int n { get; set; }
}
1.初始化
var url = new Uri("wss://fstream.binance.com/ws/!ticker@arr");
var client = new WebsocketClient(url);
client.MessageReceived.Subscribe(OnReceived);
await client.Start();
2。 OnReceived事件
private async void OnReceived(ResponseMessage responseMessage)
{
var strResponse = responseMessage.ToString();
var rps = JsonConvert.DeserializeObject<List<MarketTicker>>(strResponse);
if (rps != null)
{
Console.WriteLine($"List<MarketTicker>: {rps.Count}");
}
}
糟糕的结果:
>>List<MarketTicker>: 51
>>List<MarketTicker>: 60
>>List<MarketTicker>: 82
>>List<MarketTicker>: 120
>>List<MarketTicker>: 140
>>List<MarketTicker>: 90
预期结果是web socket 响应消息中的所有符号,但几乎只是其中的一部分。我已经尝试了很多次,但都失败了,它只是返回任意数量的它,在不同的时间之间变化。
我需要的是所有这些。
Binance API 或我的代码有什么问题?在这种情况下有人可以帮助我吗?任何积极的 cmets 都表示赞赏。
提前致谢。
【问题讨论】:
标签: c# api websocket binance binance-api-client