最近使用了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合并返回一个Bufferlet buf=Buffer.concat(msg);conosole.log(buf)//提取Buffer正确})
}
});
server.listen(3000,'127.0.0.1');
在nodejs中接收buffer数据需要以数组阵列的方式存储然后通过buffer.concat对数组阵列合并创建新的arraybuffer。这样就正确的接收二进制数据了。