关于Node.js中HTTP请求返回数据需要JSON解析的问题

本文介绍了在使用NodeJS的WebSocket模块实现数据推送时遇到的问题及解决方案。主要问题是在大量数据推送时,JSON.parse()出现Unexpected end of JSON input错误。通过调整数据接收方式成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在编写项目过程中,需要用到实时数据的推送需求, 所以首先想到了NodeJS的websocket模块

在网上找了一个聊天室的例子  然后将其改为自己需求的推送

 

其中遇到的问题

 

返回数据问题  :   由于对NodeJS不是非常熟悉  所以采用偷懒将数据处理等放在PHP后端处理   然后使用NodeJS进行请求   然后在这个过程中发现请求回的数据是ArrayBuffer   然后百度发现是因为需要JSON格式转换   所以又找到了JSON.parse()函数进行转换,刚刚开始的时候是非常好用的  但是后来发现了问题就是在数据量非常大的时候发现了  JSON.parse 报错误   

 

 Unexpected end of JSON input

 

经过各种寻找之后发现是   在请求的时候

req.on('data',function(data){

datas = JSON.parse(data)

})

 

 

这个过程是会分成两次进行执行    将返回的数据切割成等同大小的数据了  所以会出现解析问题    最后采用的解决办法

let datas = '';

req.on('data',function(data){

    datas += data;

})

 

req.on('end',function(){

    datas1 = JSON.parse(datas);

})

 

 

这样改过之后发现就可以了       

 

最后总结: 问题原因还是在于本人对NodeJS 不够了解   毕竟不是专业的     所以记录下来  希望以后不会忘记  计算忘记也可以找到解决办法

 

转载于:https://www.cnblogs.com/Gasg/p/8044889.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值