如何在Node.js的httpServer中接收前端發送的arraybuffer數據

最近使用了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');

在nodejs中接收buffer數據須要以數組陣列的方式存儲而後經過buffer.concat對數組陣列合併建立新的arraybuffer。這樣就正確的接收二進制數據了。node

相關文章
相關標籤/搜索