最近使用了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就好了node
這樣就能夠獲取完成的二進制數據了,是否是好簡單...數組