Node.js中如何将Angel Broking WebSocket返回的二进制数据转为JSON或字符串
在Node.js中转换Angel Broking SmartAPI WebSocket二进制数据为JSON/字符串
当你从Angel Broking的SmartAPI WebSocket收到二进制数据时,这些数据本质是Node.js的Buffer对象,你可以通过以下步骤将其转换为字符串或JSON:
步骤1:将Buffer转换为字符串
使用Buffer.toString()方法(默认编码为utf8,这也是大多数API使用的编码格式),把二进制数据转成可读字符串。
步骤2:解析字符串为JSON对象
如果返回的字符串符合JSON格式,直接用JSON.parse()解析成JSON对象即可。同时建议添加异常处理,避免因数据格式错误导致程序崩溃。
修改后的代码如下:
const WebSocket = require('ws'); const ws = new WebSocket('ws://smartapisocket.angelone.in/smart-stream', { headers: { 'Authorization': 'eyJhbGciOiJIUzUxMiJ9.eyJ1c2VybmFtZSI6IlY1NzUzNjkiLCJyb2xlcyI6MCwidXNlcnR5cGUiOiJVU0VSIiwiaWF0IjoxNjc1NzkxMTYyLCJleHAiOjE3NjIxOTExNjJ9.vLCZ_yja1HtnrShXHnlfLuMm2-fftyvFo16ZQE4_4gvwAq9LTJXBJVjTp7afsL0xFPJaUyFJbvF9QZndy69NaA', 'x-api-key': 'XXXX', 'x-client-code': 'XXXXX', 'x-feed-token': 'XXXXXX' } }); ws.send(payload); // 接收数据并转换 ws.on('message', function incoming(data) { try { // 将二进制Buffer转为utf8字符串 const dataString = data.toString('utf8'); // 解析为JSON对象 const jsonData = JSON.parse(dataString); console.log('解析后的JSON数据:', jsonData); } catch (error) { console.error('数据转换失败:', error); // 可以在这里处理解析失败的情况,比如打印原始字符串排查问题 console.log('原始字符串数据:', data.toString('utf8')); } });
额外说明
- 如果API使用的不是
utf8编码,可以尝试ascii或base64等其他编码格式,不过绝大多数场景下utf8都适用。 - 异常处理很重要,因为WebSocket推送的数据可能存在格式异常,或者非JSON格式的通知消息,直接解析会抛出错误。
内容的提问来源于stack exchange,提问作者Muthukumar Marichamy
相关产品推荐
相关产品推荐

