如何通过WebSocket正确向Binance发送Ping请求?
解决Binance US WebSocket Ping请求报错的问题
问题原因
Binance US的WebSocket Ping要求发送JSON格式的请求帧,而非纯文本的"PING"字符串。你当前发送的纯文本不符合它的JSON格式校验规则,因此触发了Invalid JSON错误。其他交易所(如Bitmex)支持纯文本Ping,但Binance的规则存在差异。
修正后的C#代码
发送包含时间戳的JSON格式Ping请求即可正常工作:
// 构造符合Binance要求的JSON Ping内容 long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); string pingJson = $"{{\"ping\": {timestamp}}}"; byte[] buffer = System.Text.Encoding.UTF8.GetBytes(pingJson); ArraySegment<byte> byte_array = new ArraySegment<byte>(buffer); var _socket = new System.Net.WebSockets.ClientWebSocket(); await _socket.SendAsync(byte_array, WebSocketMessageType.Text, true, CancellationToken.None);
补充说明
- Binance会返回对应的
{"pong": <timestamp>}响应,其中的时间戳与你发送的一致,用于验证连接存活状态 - 原有连接、订阅逻辑无需修改,仅需调整Ping请求的内容格式
内容的提问来源于stack exchange,提问作者AjLearning
相关产品推荐
相关产品推荐

