You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript解析BingX WebSocket返回的Blob格式K线数据?

解决BingX WebSocket Blob响应读取K线数据的问题

当WebSocket返回Blob格式的数据时,你需要先将Blob转换为字符串,再解析成JSON格式才能提取K线数据。以下是修改后的代码和步骤说明:

修改后的代码

var ws = new WebSocket('wss://open-ws-swap.bingbon.pro/ws');

ws.onopen = (event) => {
    const msg = {
        id: "548",
        reqType:"sub",
        dataType: "market.kline.BTC-USDT.1min",
    }
    ws.send(JSON.stringify(msg));
    console.log('connection stablished!')
}

// 处理消息
ws.onmessage = function(event) {
    // 判断是否为Blob类型
    if (event.data instanceof Blob) {
        const reader = new FileReader();
        // 读取Blob为文本
        reader.readAsText(event.data);
        reader.onload = function() {
            try {
                // 解析JSON
                const data = JSON.parse(reader.result);
                // 提取K线数据
                if (data.dataType === 'market.kline.BTC-USDT.1min') {
                    const candlestickData = data.data;
                    console.log('K线数据:', candlestickData);
                    // 按需处理单根K线数据,格式一般为[时间戳, 开盘价, 最高价, 最低价, 收盘价, 成交量]
                    candlestickData.forEach(kline => {
                        console.log(
                            '时间戳:', kline[0],
                            '开盘价:', kline[1],
                            '最高价:', kline[2],
                            '最低价:', kline[3],
                            '收盘价:', kline[4],
                            '成交量:', kline[5]
                        );
                    });
                }
            } catch (error) {
                console.error('解析数据失败:', error);
            }
        };
        reader.onerror = function(error) {
            console.error('读取Blob失败:', error);
        };
    } else {
        // 非Blob格式直接尝试解析
        try {
            const data = JSON.parse(event.data);
            console.log('K线数据:', data.data);
        } catch (error) {
            console.error('解析数据失败:', error);
        }
    }
}

ws.onclose = function(event) {
    console.log(event)
};

ws.onerror = function(error) {
    console.log(error);
};

关键步骤说明

  • 识别Blob类型:通过instanceof Blob判断返回数据类型,针对性处理Blob格式。
  • 转换Blob为文本:用FileReader.readAsText()将Blob转成UTF-8字符串,因为BingX的WebSocket响应本质是JSON文本,只是以Blob形式传输。
  • 解析JSON提取K线:将字符串解析为JSON对象后,根据API返回结构从data字段获取K线数组,数组内每一项对应一根K线的具体数据。
  • 错误防护:添加try-catch和读取错误监听,避免解析或读取失败导致程序异常。

内容的提问来源于stack exchange,提问作者MohsenCreative

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:28:21