如何在node.js的httpserver中接收二进制数据

本文解决使用Node.js接收前端二进制数据时出现的数据错误问题,通过使用Buffer.concat方法正确处理req.on('data')接收到的buffer数组,实现完整二进制数据的获取。

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

最近使用了protobuf进行数据交互,发送在node.js接收前端的二进制数据出现了数据错误等问题。后来发现思路上面的问题,在req.on('data',()=>{})中的处理不适当才引发数据错乱

我先直接贴正确接收二进制数据代码

const server = http.createServer((req, res) => {
        if(req.method==='OPTIONS'){
            res.setHeader("Access-Control-Allow-Origin", "*");
            res.statusCode=200;
        }
        if(req.method==='POST'){
          // 存储数组空间
          let msg=[];
          // 接收到数据消息
          req.on('data',(chunk)=>{
            if(chunk){
              msg.push(chunk);
            }
          })
          // 接收完毕
          req.on('end',()=>{
            // 对buffer数组阵列列表进行buffer合并返回一个Buffer
            let buf=Buffer.concat(msg);
            conosole.log(buf)//提取Buffer正确
          })                  
}    
});
server.listen(3000,'127.0.0.1');复制代码

通过上面可以看到我用数据的方式来存储req发送过来的buffer实例。然后通过Buffer.concat的方式将buffer数组阵列的数据进行合并成一个buffer就行了

这样就可以获取完成的二进制数据了,是不是好简单...


转载于:https://juejin.im/post/5be5447ff265da61327ed277

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值