Articles of 分块编码

gunzip使用zlib在node.js中分割TCP响应

Node.js v9.2.1 问题: 在node.js中使用内置的zlib模块时是否可以放弃标题检查? zlib在这个“标题检查”期间寻找的是什么?/我能欺骗吗? 我见过的所有例子都是使用某种types的库(http,request),它们在执行zlib之前实现了至less一些头parsing。 那么zlib实际上看起来不是什么原始的反应。 同样在这些例子中,closures连接时触发“结束”事件。 我的例子将没有这样的事件。 对于这个问题,让我们假设我正在使用一个死的简单的net.Socket与持久的TCP连接,如下所示: var net = require('net'); var chunks = []; var socket = net.connect({ port: foo, host: bar }, () => { socket.write('<perfectRequestHeaders>', null, () => { socket.on('data', (chunk) => { chunks.push(chunk); }) }) }) 然后,当我决定所有的块已经收到。 (没有“结束”事件,因为连接保持打开状态,只有当我看到终止块时,我才完全知道响应) var zlib = require('zlib'); var resBuffer = Buffer.concate(chunks); var headerEndIndex […]

使用Nodejs来服务一个MP4video文件

我正在尝试从nodejs服务器提供〜52MB的mp4video文件。 以下附件是用于提供文件的代码的屏幕截图。 我有一个MIMEtypes的静态文件调用的对象,其中包含mp4的MIMEtypes。 var mimeTypes = { html: 'text/html; charset=utf-8', jpeg: 'image/jpeg', jpg: 'image/jpeg', png: 'image/png', js: 'text/javascript', css: 'text/css', mp4: 'video/mp4' }; 但是,当我尝试导航到铬页面,我得到的错误: GET http://localhost:8888/videos/movie.mp4 net::ERR_INCOMPLETE_CHUNKED_ENCODING 现在这个相同的逻辑(上面截图)用于服务图像和CSS就好了,但尝试服务mp4时失败了。 查看Chrome中的networking请求面板,我可以看到服务器响应200 OK状态,并提供零字节文件作为video。 networking请求中的字节范围也看起来很可疑,但我对HTTP请求知之甚less。 查看stats对象(如下所示,从fs.lstat得到),看起来文件'知道'如何被分割成4096字节的块,但是我不断得到不完整的分块编码错误。 我没有杀毒软件,并试图closuresChrome /使用其他浏览器的各种设置,但我看不到video。 {"dev":16777220,"mode":33188,"nlink":1,"uid":501,"gid":20,"rdev":0,"blksize":4096,"ino":1070608,"size":51246445,"blocks":100096,"atime":"2016-06-15T23:06:27.000Z","mtime":"2016-06-15T21:41:00.000Z","ctime":"2016-06-15T21:45:56.000Z"} 有没有我失踪的标题? 我不知何故过早地结束了回应? 我现在无能为力

连接“audio/ x-wav”缓冲区并使用“传输编码”服务:“分块”

这个问题是对前一个问题的跟进,由于@thejh而解决了。 我试图将文本转换为audio,并将数据作为“分块”数据提供给客户端。 到目前为止我的头像是这样的: res.writeHead(200, { 'Content-Type': 'audio/wav', // I tried 'audio/x-wav' as well 'Transfer-Encoding': 'chunked' }); 然后,我将文本片段转换为队列中的audio(我将其作为base64编码数据获取),然后像这样提供它们: var src = Base64Audio.replace("data:audio/x-wav;base64,",""); var binAudio = new Buffer( src, 'base64'); res.write(binAudio); 所有的信息都被传输到客户端,但由于某种原因,浏览器(我正在Firefox 7.0.1中testing)正在播放它,并在第一个块之后停止。 这是结果/演示显示audio提前结束 ,这是在github 上运行的代码 。 为什么是这样? 这是因为x-wav数据在头部/元数据中是否具有像End或指定长度的元数据? 如果是这样的元数据是什么,是否有某种方式来编辑它,使浏览器成功连接接收到的块? 我知道Header的'Content-Length': Buffer.length但在这种情况下,我不知道整个stream将会持续多久。 任何人都可以提供build议 是否有可能编辑缓冲区发送之前,让浏览器连接他们正确?

一旦进入AngularJS,有什么方法显示“分块”响应?

目前,我有一个问题,显示从我的Web服务Node.js服务器(localhost:3000)发送到在Node.js服务器(localhost:3001)上运行的模拟客户端的响应块。 编辑* – 当前的实现只是使用Angular的%http作为没有web-sockets的传输 逻辑如下: 1。 在“Cities”的客户端创build一个数组,并将它们(从AngularJS控制器)发布到位于以下位置的Web Service:localhost:3000 / getMatrix $http({ method: 'POST', url: 'http://localhost:3000/getMatrix', data: cityArray }). success(function (data,status,headers,config){ // binding of $scope variables // calling a local MongoDB to store the each data item received for(var key in data){ $http.post('/saveRoutes', data[key]) .success(function (data, status){ // Data stored }) .error(function (data, status){ // error […]

在JSON响应上重复块

我已经有了一个相当标准的MEAN项目设置,使用yeoman的angular-fullstack生成器。 我发现,当获取大于65536字节的json结果时,它使用gzip和chunked进行编码,但返回的json无效,无论是在chrome中还是由我的angular度客户端$资源使用,因为它包含TWO答复! 例如[{..},{..}][{..},{..}]对于一个数组[{..},{..}][{..},{..}] {name:'hi'}{name:'hi'}对于一个单一的id或[{..},{..}][{..},{..}] 。 服务器API端点是从angular-fullstack生成器自动生成的,如下所示: // Get list of worlds exports.index = function(req, res) { World.find(function (err, worlds) { if(err) { return handleError(res, err); } res.json(200, worlds); }); }; 如果我切片的数据,所以它不分块,那么JSON格式良好。 我已经检查了mongo数据库,数据也没有问题,debuggingworldsvariables,我可以JSON.stringify并得到预期的string结果没有任何重复。 但是发送的那一刻,我得到了json响应结果的两倍。 更新评论 angular-fullstack 2.0.4 该模式如下所示: 'use strict'; var mongoose = require('mongoose'), Schema = mongoose.Schema; var WorldSchema = new Schema({ name: String, info: String, […]