Articles of arraybuffer

新的Uint32Array(buff,start_pos,arr_len)用Node.js返回意外的结果

我一直在尝试读取从node.js程序的URL中压缩的大型二进制文件。 为了简化问题,我试图从stream的开头读取两个无符号的整数。 看起来,给定一个大的缓冲区,下面的代码(不正确)返回相同的数组为a1和a2在Node.js,但(正确)不会返回相同的数组, XMLHttpRequest的: var bufferPos = 0; var a1 = new Uint32Array(bData, bufferPos, 1); bufferPos += 4; var a2 = new Uint32Array(bData, bufferPos, 1); 无论数据中的内容如何,​​a1和a2总是看起来与整个缓冲区大小相同,所以我不得不尝试这个更好的结果,但是我需要从一个值数组转换为Uint32 : var bufferPos = 0; var a1 = new Uint32Array(bData.slice(bufferPos, (bufferPos+=4))); var a2 = new Uint32Array(bData.slice(bufferPos, (bufferPos+=4))); 此代码处于callback状态,构build内容并将数据传递给bData的代码位于包含以下内容的https.get调用中: //In https.get() tBuffer = null; var gunzip = zlib.createGunzip(); resp.pipe(gunzip); gunzip.on('data', […]

节点js – 在ArrayBuffer中存储大量数据

考虑这个代码: var b = new ArrayBuffer(2); b[0] = 1; b[1] = 23234322442; 1号单元中的数字明显大于1个字节,但ArrayBuffer没有问题存储,当我打印b到控制台时,我可以看到数字在那里。 什么解释? 谢谢。

如何将缓冲区数组转换为hex?

当我调用其中一个API端点时,我得到一个JSON对象中的Buffer数组。 我想这个数组转换为一个更“可用”的forms(hex?),所以我可以比较它们等,这是什么对象目前看起来像: "hash": { "type": "Buffer", "data": [ 151, 14, 51, 26, 46, 52, 5, 151, 99, 107, 38, 188, 138, 180, 76, 56, 108, 214, 135, 213, 125, 134, 105, 139, 129, 236, 206, 157, 67, 1, 12, 12 ] } 我将如何去将这个数组转换为hex(或string等),以便我可以比较散列?

如何在Node.js WebSocket服务器和C#客户端之间交换二进制数据?

我有最好的HTTP资源 Node.js WebSocket服务器和Unity客户端。 我用来传输JSON数据,但parsing成本太多的CPU资源。 现在,我尝试从C#发送byte []消息,如下所示: //sending sample array – new float[] { 1.32, 3.12 } //convert an object to a byte array private byte[] ObjectToByteArray(Object obj) { if(obj == null) return null; BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, obj); return ms.ToArray(); } 但服务器收到Uint8Array [1,3],小数部分丢失。 var wss = new WebSocket.Server({ […]

NodeJSstream暂停/恢复不适用于XMLHttpRequest,但与curl?

这是一个相当深奥的问题,我不能提供一个小的testing用例,所以提前抱歉。 但是也许有人遇到过这样的事情。 我有这样的代码(使用restify): server.put("/whatever", function (serverRequest, serverResponse, next) { serverRequest.pause(); serverRequest.on("data", function (chunk) { console.log("from outside", chunk); }); doSomeAsyncStuff(function (err) { serverRequest.on("data", function (chunk) { console.log("from inside", chunk); }); serverRequest.on("end", function () { next(); }); serverRequest.resume(); }); }); 当我用CURL打这个服务器时,这个工作很好。 但是当我用XMLHttpRequest命中它的时候,我"from inside"日志"from inside"看到的内容less于"from outside"日志行。 尽pipe我尽最大的努力暂停,但看起来数据事件之一正在迷失。 这是我使用的CURL命令: curl -X PUT -T file.pdf http://localhost:7070/whatever -v 这里是XMLHttpRequest代码(适用于最新版本的Chrome): var arrayBuffer […]

数组和ArrayBuffer有什么区别?

我只是想知道为什么每个人都使用ArrayBuffer而不是一个正常的array , string或stringJSON从服务器发送消息到客户端。 效率更高吗? 另外,只是想知道Uint8Array是什么,它是如何不同,在哪里使用两个等等。 我目前正在使用Node.js与Socket.io,但我很乐意改为纯WebSocket s,如果这是一个更好的方法。

在浏览器中接收WebSocket ArrayBuffer数据 – 接收string

我有一个node.js服务器应用程序和一个浏览器客户端。 发送ArrayBuffer数据浏览器 – >服务器工作正常,但服务器 – >浏览器产生一个string"[object ArrayBuffer]"被接收。 这发生在Chrome和Firefox的最新版本中。 服务器: var serverPort = 9867; // dependencies var webSocketServer = require('websocket').server; var http = require('http'); var players = {}; var nextPlayerId = 0; // create http server var server = http.createServer(function(request, response) { }); server.listen(serverPort, function() { console.log((new Date()) + " Server is listening on port " […]

使用zip.js通过Node.js上的xmlhttp / ajax调用来读取zip文件

我在尝试着 : 通过xmlhttp发送一个zip文件到客户端 然后使用zip.js读取文件并呈现其内容 我成功地收到文件的二进制文件,即成功的callback被称为,但我得到和错误,当我尝试做getEntries 。 我认为错误是与发送stream的方式,请帮助。 错误消息 : 阅读zip文件时出错 我的客户端代码(使用angular度): $http.get(window.location.origin + '/book/'+bookName,{responseType:"Blob"}). success(function (data , error) { var a = new Uint8Array(data); //var dataView = new DataView(data); //var blob = new Blob(dataView.buffer); zip.useWebWorkers = true; zip.workerScriptsPath = '/js/app/'; zip.createReader(new zip.BlobReader(data), function(reader) { // get all entries from the zip reader.getEntries(function(entries) { //HERE I […]

如何从JS中的ArrayBuffer写入文件

我正在为Meteor框架写一个file upload器。 其原理是以4096比特的小数据包将客户端上的文件从ArrayBuffer中分离出来,这些数据包通过Meteor.method发送到服务器。 下面的简化代码是发送一个块到服务器的客户端的一部分,重复直到偏移量达到data.byteLength : // data is an ArrayBuffer var total = data.byteLength; var offset = 0; var upload = function() { var length = 4096; // chunk size // adjust the last chunk size if (offset + length > total) { length = total – offset; } // I am using Uint8Array to […]

将二进制NodeJS缓冲区转换为JavaScript ArrayBuffer

如何将一个NodeJS二进制缓冲区转换为JavaScript ArrayBuffer?