如何在Node.js的httpServer中接收前端傳送的arraybuffer資料

楊周龍發表於2019-02-16

最近使用了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。這樣就正確的接收二進位制資料了。

相關文章