如何在node.js的httpserver中接收二進制數據

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

這樣就能夠獲取完成的二進制數據了,是否是好簡單...數組

相關文章
相關標籤/搜索