摘要:最近使用了進(jìn)行數(shù)據(jù)交互,發(fā)送在接收前端的二進(jìn)制數(shù)據(jù)出現(xiàn)了數(shù)據(jù)錯(cuò)誤等問(wèn)題。后來(lái)發(fā)現(xiàn)思路上面的問(wèn)題,在事件中的處理不適當(dāng)才引發(fā)數(shù)據(jù)錯(cuò)亂。
最近使用了protobuf進(jìn)行數(shù)據(jù)交互,發(fā)送在node.js接收前端的二進(jìn)制數(shù)據(jù)出現(xiàn)了數(shù)據(jù)錯(cuò)誤等問(wèn)題。后來(lái)發(fā)現(xiàn)思路上面的問(wèn)題,在req.on("data",()=>{})事件中的處理不適當(dāng)才引發(fā)數(shù)據(jù)錯(cuò)亂。借此發(fā)
我先直接貼正確接收二進(jìn)制數(shù)據(jù)代碼
const server = http.createServer((req, res) => { if(req.method==="OPTIONS"){ res.setHeader("Access-Control-Allow-Origin", "*"); res.statusCode=200; } if(req.method==="POST"){ // 存儲(chǔ)數(shù)組空間 let msg=[]; // 接收到數(shù)據(jù)消息 req.on("data",(chunk)=>{ if(chunk){ msg.push(chunk); } }) // 接收完畢 req.on("end",()=>{ // 對(duì)buffer數(shù)組陣列列表進(jìn)行buffer合并返回一個(gè)Buffer let buf=Buffer.concat(msg); conosole.log(buf)//提取Buffer正確 }) } }); server.listen(3000,"127.0.0.1");
在nodejs中接收buffer數(shù)據(jù)需要以數(shù)組陣列的方式存儲(chǔ)然后通過(guò)buffer.concat對(duì)數(shù)組陣列合并創(chuàng)建新的arraybuffer。這樣就正確的接收二進(jìn)制數(shù)據(jù)了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99164.html
摘要:默認(rèn)參數(shù)為空字符串密碼,可選參數(shù),用于授權(quán)。默認(rèn)參數(shù)為空字符串備注如果不是有效的方法或地址不能被成功解析,將會(huì)拋出異常如果請(qǐng)求方法不區(qū)分大小寫(xiě)為或?qū)?huì)拋出異常重寫(xiě)由服務(wù)器返回的類型。 本文詳細(xì)介紹了 XMLHttpRequest 相關(guān)知識(shí),涉及內(nèi)容: AJAX、XMLHTTP、XMLHttpRequest詳解、XMLHttpRequest Level 1、Level 2 詳解 XHR...
大吉大利,今晚吃雞! - PUBG 時(shí)隔多日,終于再次拾起這個(gè)拖了很久的項(xiàng)目。并不是因?yàn)闆](méi)時(shí)間,也不是因?yàn)檫@個(gè)項(xiàng)目對(duì)于我來(lái)說(shuō)有多困難,就是一個(gè)字————懶。此項(xiàng)目的后臺(tái),當(dāng)然是選擇node.js來(lái)實(shí)現(xiàn)。作為一個(gè)前端,node.js比起java、php簡(jiǎn)單多了。 node支持的webSocket 在npm中有很多支持webSocket的模塊,包括socket.io...
摘要:本文作為系列的第四篇內(nèi)容,將會(huì)用一個(gè)簡(jiǎn)單的聊天應(yīng)用把整個(gè)傳輸二進(jìn)制數(shù)據(jù)類型的內(nèi)容連接起來(lái),讓用戶對(duì)整個(gè)傳輸二進(jìn)制數(shù)據(jù)的方法有個(gè)了解。如何發(fā)送二進(jìn)制數(shù)據(jù)通過(guò)如何設(shè)計(jì)一個(gè)二進(jìn)制協(xié)議一章,我們知道了如何定義傳輸?shù)亩M(jìn)制數(shù)據(jù)格式。 概述 通過(guò)前三篇博客,我們能夠了解在通過(guò)WebSocket發(fā)送數(shù)據(jù)之前,我們需要傳遞的數(shù)據(jù)是如何變成ArrayBuffer二進(jìn)制數(shù)據(jù)的;在我們收到二進(jìn)制數(shù)據(jù)之后,我...
摘要:讓?xiě)?yīng)用程序擁有異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上文件或原始數(shù)據(jù)緩沖區(qū)的能力,使用或?qū)ο笾付ㄒx取的文件或數(shù)據(jù)。對(duì)象用來(lái)表示通用的固定長(zhǎng)度的原始二進(jìn)制數(shù)據(jù)緩沖區(qū)。事實(shí)上,沒(méi)有名為的全局對(duì)象,也沒(méi)有一個(gè)名為的構(gòu)造函數(shù)。 Ajax 即 Asynchronous Javascript And XML (異步 JavaScript 和 XML),是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。在無(wú)需重新加載整...
閱讀 1585·2021-11-25 09:43
閱讀 2488·2019-08-30 15:54
閱讀 2952·2019-08-30 15:53
閱讀 1102·2019-08-30 15:53
閱讀 758·2019-08-30 15:52
閱讀 2551·2019-08-26 13:36
閱讀 822·2019-08-26 12:16
閱讀 1221·2019-08-26 12:13