基于libwebsockets的Binance Futures WebSocket连接失败问题求助
解决方案
1. 修正WebSocket端口号
Binance期货的WSS服务默认使用443端口,而非你代码中的9443。修改AddProtocol的端口参数:
ws.AddProtocol("futures", "fstream.binance.com", "/ws", 443, func);
2. 直接连接指定主题的URL(更简单的验证方式)
既然你用Chrome插件访问wss://fstream.binance.com/ws/btcusdt@ticker能成功,可以跳过发送订阅指令,直接把路径设为/ws/btcusdt@ticker,连接后会自动推送数据,无需额外发送订阅消息:
// 修改AddProtocol的路径参数 ws.AddProtocol("futures", "fstream.binance.com", "/ws/btcusdt@ticker", 443, func); // 移除订阅代码,因为路径已包含目标主题 auto runAfterConnection = [&ws](void) ->void { // 此处无需执行任何操作 };
3. 验证TLS配置(若端口修正后仍失败)
该libwebsockets封装库可能需要明确启用TLS支持。检查库的初始化逻辑,确保创建WebSocket上下文时开启了TLS选项,部分封装库会默认禁用WSS,需手动开启。
4. 检查订阅消息格式(若保留主动订阅方式)
如果坚持使用发送订阅指令的方式,确认以下细节:
- 主题名称
btcusdt@ticker大小写正确(Binance接口要求小写) - JSON格式无语法错误,比如引号、逗号位置正确
- 尝试开启库的日志功能,查看连接过程中是否有错误输出(比如连接失败原因、订阅指令被拒绝的提示)
优先尝试第二种直接指定主题路径的方式,这种方式逻辑更简单,能快速验证连接是否正常。
内容的提问来源于stack exchange,提问作者Tiberius
相关产品推荐
相关产品推荐

