Tag: 缓冲区

如何从缓冲区node.js读取二进制数据为数字?

目前我收到一个消息,我的udp服务器到达<Buffer 43 31 07 55 56>这应该是一个ID 4331075556 obj.toString()返回C1UV parseInt(obj)返回NaN JSON.stringify(obj)返回[67,49,7,85,86] 我怎么能把<Buffer 43 31 07 55 56>成4331075556 ?

从客户端使用NodeJs Buffer类

我正在使用nodejs Buffer类( http://nodejs.org/api/buffer.html )来parsing一些原始数据,并使用它的所有方法。 不过,我想在客户端使用它,因为我不需要一个服务器(我主要是parsing数据)。 有没有一种简单的方法来访问客户端的Buffer类中的所有方法? 非常感谢

规范的方式从缓冲区中删除多个字节

假设我在Node.js中有一个简单的Buffer,如下所示: const bytes = Buffer.from('abcdefg'); 这个缓冲区实例有slice和concat作为方法,但我真的不知道如何使用这些基本上创buildpopup/移位/拼接数组的function。 这里是缓冲区文档: https : //nodejs.org/api/buffer.html 我基本上想要做的是读取/删除前X个字节,如下所示: function read(x){ // return the first x number of bytes from buffer // and remove those bytes from the buffer // side-effects be damned for the moment } 这里是我所拥有的,但对我来说这似乎是相当“错误的”,尽pipe它似乎也起作用: let items = Buffer.from('abcdefg'); function read(x){ const b = items.slice(0,x); items = items.slice(x,items.length); return b; […]

Node.js中的response.write失败

我正在试图制作一个代理服务器,例如从www.xxx.com获取一个页面,caching响应,然后将其发送到请求的浏览器。 为此,在服务器上创build一个请求来自xxx.com的页面的HTTP客户端。 响应以块(Buffers)的forms返回。 然后,由于块的数量根据网页的不同而不同,所以我把块放在一个缓冲区中。 然后我发送数组的元素。 我的问题不是所有的块都发送成功 。 有没有其他的方式可以caching数据发送之前? (我知道我可以直接发送数据,但是我需要发送caching,因为我想把它发送给多个浏览器) 为了保存我使用的块: function getURL(u) { u = url.parse(u); var client = http.createClient(u.port || 80, u.hostname); var request = client.request('GET', '/', { 'Host': u.hostname, }); var cache ={ }; cache.data = []; request.end(); request.on('response', function(response) { cache.statusCode = response.statusCode; cache.headers = response.headers; response.on('data', function(chunk) { cache.data.push(chunk); } } […]

Node.js,protobuffer,buffer.lentgh ..如何发送结构化的缓冲区/消息槽tcp?

我写了一个节点/ ssjs程序,使: Tcp连接到数据服务器(Apache MIMA),使用TLS模块。 (好) 通过protobuffer模块对消息进行编码/解码(序列化/反序列化)。(OK) 将序列化的消息发送到服务器并获得响应。 (不好)。 服务器的手册types: Structure of message: [ Length | Header length | Header (| Body length |Body) ] Length – message length = fixed size (4 bytes). Note that this is only the size of following message (not the prefix itself); Header length – fixed size (4 bytes); Header […]

node.js – replace缓冲区中的内容的最佳方法

我正在读取一个文件来缓冲像: var myfile = fs.readFileSync(myfile.txt); 什么是正确的方法来replace一些string到另一个在myfile缓冲区? 我想保留它作为缓冲区,因为它比保持它作为string更快。

节点:下载没有pipe道输出的jpeg的原始字节

这是我想要做的: 从API提供给我的URL中检索图像的原始数据(jpeg) 将原始数据或缓冲区传递给将其上传到另一个服务器的函数 切勿将图像移动到磁盘上 我已经按照我可以find的每个例子(这不是pipe道到磁盘),但内容仍然损坏。 我试图强制各种“接受编码”(gzip,deflate),但他们基本上解决了相同的数据,只是压缩。 我相信这与响应编码有关,而不是我如何要求数据。 以下是目前的代码: var parsedUrl = require('url').parse(PATH_TO_IMAGE) var params = { hostname: parsedUrl.hostname, path: parsedUrl.path, } return http.get(params, function(photo_res) { var photoData = ''; res.setEncoding('binary'); photo_res.on('data', function(chunk) { photoData += chunk; }); photo_res.on('end', function() { // DO STUFF TO UPLOAD IMAGE }); photo_res.on('error', function(err) { console.error('Unable to download photo:', err); […]

我怎样才能禁用nodejs ChildProcess.spawn标准输出缓冲区?

我想拦截compass watch输出使用以下代码: var spawn = require('child_process').spawn; var child = spawn('compass', ['watch'], { cwd: process.cwd() }); process.on('data', function (data) { console.log('[log] ' + data); }); 我的问题是:我必须保存文件两次覆盖消息出来的标准输出。 这是一个示例输出… node compass.js [log] >>> Compass is watching for changes. Press Ctrl-C to Stop. 我保存完文件后 [log] >>> Change detected at 20:17:19 to: components/_avatar.scss 我第二次保存文件后 [log] overwrite assets/css/modules/projects.css >>> Change detected […]

在缓冲区的JavaScript代码节点js segfault

在处理节点扩展中的大量数据包时,我的节点应用程序几乎是随机的崩溃。 当我在gdb(用debugging符号编译的节点)中打开掉落的核心文件时,这就是我得到的: Program terminated with signal 11, Segmentation fault. #0 0x5e02190a in ?? () (gdb) bt #0 0x5e02190a in ?? () #1 0x5e01316a in ?? () #2 0x08210303 in v8::internal::Invoke(bool, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, bool*) () #3 0x0821062f in v8::internal::Execution::New(v8::internal::Handle<v8::internal::JSFunction>, int, v8::internal::Handle<v8::internal::Object>*, bool*) () #4 0x081bfadd in v8::Function::NewInstance(int, v8::Handle<v8::Value>*) const () … 看看我的C包处理扩展的源代码,NewInstance实际上是对节点的缓冲区构造函数的调用。 这里是违规的代码片断(数据包是一个常规的c数据结构): … […]

这是否意味着node.js中的内存泄漏?

我使用node.js 0.10.18(在Amazon EC2上)作为我们的ios游戏http服务器。 我使用process.memoryUsage()来打印内存使用情况。 我发现我们的节点的内存使用情况是不正常的。 运行两天后: machine1节点: 2014-10-13T02:35:04.782Z – 重要:进程:堆总计119.70 MB heap使用84.62 MB的RSS 441.57 MB的 machine2节点: 2014-10-13T02:36:01.057Z – 重要:进程:堆总计744.72 MB heap使用108.19 MB的RSS 1045.53 MB 结果是: 这两个heapUsage都非常小,它与节点进程运行多长时间无关。 machine2上的heapTotal比heapUsed ,在重新启动过程之前,它永远不会变小。 但machine1 heapTotal看起来很正常。 machine1是Amazon EC2 m3.xlarge, machine2是Amazon EC2 m3.medium。 从Amazon CloudWatch中我知道machine2的性能不足,有时machine2的CPU使用率会达到100%。 那么exceptionheapTotal使用情况是否与硬件的不足有关? 100%的CPU使用率不是我们节点进程的结果,因为使用node-usage模块,我看到我们节点进程的CPU使用率永远不会高于50%。 我认为这个用法是被邻近的虚拟机盗取的(你知道在Amazon EC2上有共享的CPU时间)。 我知道缓冲区内存使用情况= (rss – heapTotal) 。 我发现两台机器上的缓冲区内存使用量会逐渐增加。 你看,两天运行两次缓冲存储器的用量都超过了300MB。 我的问题是: 为什么heapTotal即使heapUsed非常小也不会释放heapTotal使用情况? 是节点本身的问题,还是我自己的代码的一些错误? 是解决它升级硬件的唯一方法吗? 为什么缓冲区使用量逐渐增加? 这是否意味着有内存泄漏? […]