Tag: multipart mixed replace

在Node.js中发出HTTP请求并接收multipart / x-mixed-replace响应

我需要向外部服务器发出HTTP GET请求才能开始接收事件。 在请求后,我立即得到multipart/x-mixed-replace响应。 当事件发生时,它将作为XML消息一起发送,并且边界指示该部分的结束。 现在我必须在Node.js中实现它。 用正常的请求我使用node-rest-client ,调用它的get()方法并把我的逻辑放在方法的callback中。 问题在于,只有在响应结束时才执行callback,而在multipart/x-mixed-replace ,只有在连接closures时才执行callback。 有一些其他的NPM模块可以做到吗? 我搜查了NPMregistry,但是我发现结果似乎不适合这个任务。 还是在纯粹的节点上做更好? 我是这样,请举个例子。

nodejs http response.write:可能是内存不足吗?

如果我有以下代码每10毫秒发送一次数据到客户端: setInterval(function() { res.write(somedata); }, 10ms); 如果客户端收到数据的速度很慢,会发生什么? 请问服务器出现内存不足的错误? 编辑:实际上连接保持活着,服务器无休止地发送jpeg数据(HTTP多部分/ x混合replace标题+正文+标题+正文…..) 由于node.js response.write是asynchronous的, 所以一些用户猜测它可能会在内部缓冲区中存储数据,并等到低层告诉它可以发送, 所以内部缓冲区会增长,对吗? 如果我是对的,那么如何解决呢? 问题是node.js没有通知我什么时候发送一个写入数据。 换句话说,我不能以这种方式告诉用户在理论上没有“内存不足”的风险,以及如何解决这个问题。 更新:通过user568109给出的关键字“drain”事件,我研究了node.js的来源,得出结论: 这真的会造成“内存不足”的错误。 我应该检查response.write(…)=== false的返回值,然后处理响应的“漏”事件。 http.js: OutgoingMessage.prototype._buffer = function(data, encoding) { this.output.push(data); //————-No check here, will cause "out-of-memory" this.outputEncodings.push(encoding); return false; }; OutgoingMessage.prototype._writeRaw = function(data, encoding) { //this will be called by resonse.write if (data.length === 0) { return […]