Java+Maven项目连接CoinDCX WebSocket报错504/1002求助
解决CoinDCX WebSocket API连接错误(504/1002)
先明确两个错误码对应的核心问题:
504 Gateway Timeout:WebSocket握手阶段网关无响应,大概率是请求不符合API要求或服务器端无法处理请求1002 Protocol Error:WebSocket协议层面不兼容,比如握手请求格式错误、协议版本不匹配
以下是针对性的排查和解决步骤:
1. 严格核对WebSocket握手请求头
WebSocket握手必须符合RFC规范,同时满足CoinDCX API的要求:
- 必须包含
Upgrade: websocket和Connection: Upgrade头,这是触发WebSocket协议切换的核心标识 - 确认
Sec-WebSocket-Version头值为13(当前标准版本,CoinDCX不支持旧版本) - 检查是否遗漏认证头:CoinDCX WebSocket API需要签名认证,必须携带
Authorization头(格式通常为Bearer <签名>或ApiKey <密钥>:<签名>,具体参考官方文档),缺失认证会直接导致握手失败,进而触发504或1002错误
2. 验证端点和连接参数
- 确认使用的是CoinDCX官方指定的WebSocket端点(比如现货数据端点是
wss://stream.coindcx.com,合约端点可能不同),不要误用HTTP端点 - 检查连接时的查询参数:比如订阅交易对的格式是否正确(如
BTC-INR)、是否携带了必要的订阅参数,参数拼写错误或格式不符会导致服务器拒绝连接
3. 抓包分析握手过程
- 在Java代码中添加日志,打印完整的握手请求和响应头(比如用OkHttp的
Interceptor,或Java-WebSocket的onHandshakeReceived方法),查看服务器返回的详细错误信息 - 用curl手动模拟握手,验证基础连接是否可行:
如果curl也失败,说明问题不在代码,可能是API权限或服务器故障;如果curl成功,对比Java代码的请求头,找出差异curl -i -N -H "Upgrade: websocket" -H "Connection: Upgrade" -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" -H "Sec-WebSocket-Version: 13" -H "Authorization: <你的认证信息>" wss://stream.coindcx.com
4. 调整WebSocket客户端配置
如果你使用Java客户端库(如OkHttp WebSocket、Java-WebSocket),检查以下配置:
- 握手超时:默认超时可能过短,建议设置为10-15秒,避免因认证处理耗时导致504
- 代理配置:如果网络需要代理,确保客户端正确配置了代理地址和端口,未配置代理会导致无法连接到服务器
- 子协议:如果CoinDCX要求指定子协议(如
json),在握手时添加Sec-WebSocket-Protocol: json头
5. 检查API权限和服务状态
- 登录CoinDCX后台,确认API密钥已开启WebSocket访问权限,部分密钥默认仅支持HTTP API
- 查看CoinDCX官方公告或状态页面,确认WebSocket服务是否正常运行,有没有临时维护
内容的提问来源于stack exchange,提问作者Deepti Hegde
相关产品推荐
相关产品推荐

