Tag: http

Node.js:node.js中的http.get方法是否有同步版本?

node.js中有没有同步版本的http.get方法? 就像是: http.getSync({ host: 'google.com', port: 80, path: '/' }, function(response){ }); console.log(response) 有时候这会非常有用。

WebSockets:有助于减less开销?

我正在构build一个dynamicsearch(更新每个击键):我目前的计划是,在每个按键,发送一个新的AJAX请求到服务器,并获取数据返回到JSON。 我考虑为每个search“会话”打开一个WebSocket,以节省一些开销。 我知道这样可以节省时间,但问题在于,考虑这些参数是否真的值得:80ms平均ping时间166ms:每次按键之间的时间,假定用户types相对较快最差情况下的传输速率为1MB / s每个按键的每个数据包必须不超过1KB。 该应用程序还需要30-40毫秒的东西来焊接search结果的DOM。 我发现这个: 关于开销的HTTP vs Websockets ,但它是一个不同的用例。 除了纯粹的HTTP开销之外,websockets会减less什么吗? HTTP开销多less(假设没有cookie和最小标题)? 我猜测HTTP请求会在每个请求中打开一个新的networking套接字,而WebSocket允许我们只使用一个。 如果我的理解是正确的,打开一个新的networking套接字的实际开销是多less?

Koa的`ctx.status`没有被发送到客户端

这是我的简单路线: router.post('/getFile', async (ctx) => { const fileName = `${ctx.request.body.file}.pdf`; const file = fs.createReadStream(fileName); // This file might not exist. file.on('error', (err) => { ctx.response.status = 500; // This status code doesn't make it to client when there's an error. }); ctx.response.type = 'application/pdf'; ctx.response.body = file; }); 这里是我的客户代码: async function main() { const request […]

我怎样才能dynamic加载和stream大的video文件到IE不发送范围头?

前段时间我在一些stream媒体video教程中发现了这个function,这样整个文件就不需要加载到内存中了,这样就可以在没有崩溃的情况下为大video文件提供服务Node.js – 用电影长度的video文件不难超越,增加内存分配只是一个创可贴的解决scheme)。 var fs = require("fs"), http = require("http"), url = require("url"), path = require("path"); var dirPath = process.cwd(); var videoReqHandler = function(req, res, pathname) { var file = dirPath + "/client" + pathname; var range = req.headers.range; var positions = range.replace(/bytes=/, "").split("-"); var start = parseInt(positions[0], 10); fs.stat(file, function(err, stats) { if (err) […]

Node.js http请求stream水线

所以,我想使用node.js和http请求stream水线,但我只想使用HTTP作为传输,没有别的。 我有兴趣利用请求stream水线function。 但是,我遇到的一个问题是,直到发送对前一个请求的响应,下一个请求的callback才不会被节点触发。 我想要一个能够做到这一点的方法。 我将在申请中处理结果的sorting。 有没有办法做到这一点? HTTP RFC提到,响应应该是有序的,但是我没有看到node.js没有任何理由不能调用下一个callback,直到第一个响应。 应用程序在理论上可以将对第二个查询的响应作为对第一个响应的响应发送(只要接收者知道这是对第二个响应的响应)。

使用node.js运行许多并行http请求

我的任务是将一个进程分成许多并行运行的小进程,分发给一些从机。 请求通过HTTP进入服务器,服务器把它分成一些发送给从属机器的subprocess,等待所有的从请求返回响应,然后将聚合结果整理成一个数据对象,作为顶级请求。 我认为node.js会很有用,但是因为它是单线程的,所以我不能确定这是否可行,或者是否会阻止等待每个请求返回,然后再转到下一个请求。 这是可能的node.js? 如果是这样,有人能指出我的方向吗? 即节点模块使用或概述如何完成? 谢谢你的帮助。

与浏览器相比,通过Node.js延迟了HTTP请求

在使用Node.js通过HTTP请求查询一些公共API。 因此,我正在使用request模块。 我正在测量我的应用程序中的响应时间,并且看到我的应用程序通过curl或浏览器从API查询中返回比“直接”请求慢2-3倍的结果。 另外,我注意到与启用了HTTPS的服务的连接通常比普通HTTP服务的连接时间要长,但这可能是巧合。 我试图优化我的request选项,但无济于事。 例如,我查询 https://www.linkedin.com/countserv/count/share?url=http%3A%2F%2Fwww.google.com%2F&lang=en_US 我使用request.defaults来设置所有请求的整体默认值: var baseRequest = request.defaults({ pool: {maxSockets: Infinity}, jar: true, json: true, timeout: 5000, gzip: true, headers: { 'Content-Type': 'application/json' } }); 实际的请求是通过 … var start = new Date().getTime(); var options = { url: 'https://www.linkedin.com/countserv/count/share?url=http%3A%2F%2Fwww.google.com%2F&lang=en_US', method: 'GET' }; baseRequest(options, function(error, response, body) { if (error) { console.log(error); } […]

如何在node.js中使用HTTP keep-alive连续发送请求?

我正在使用node.js 0.6.18,下面的代码使node.jsclosures每两个请求之间的TCP连接(在Linux上用stracevalidation)。 如何让node.js为多个HTTP请求(即保持活动状态)重复使用相同的TCP连接? 请注意,networking服务器能够保持活跃,它可以与其他客户端一起工作。 networking服务器返回分块的HTTP响应。 var http = require('http'); var cookie = 'FOO=bar'; function work() { var options = { host: '127.0.0.1', port: 3333, path: '/', method: 'GET', headers: {Cookie: cookie}, }; process.stderr.write('.') var req = http.request(options, function(res) { if (res.statusCode != 200) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); process.exit(1) } res.setEncoding('utf8'); […]

Node.js Http.request在负载testing下变慢。 难道我做错了什么?

这是我的示例代码: var http = require('http'); var options1 = { host: 'www.google.com', port: 80, path: '/', method: 'GET' }; http.createServer(function (req, res) { var start = new Date(); var myCounter = req.query['myCounter'] || 0; var isSent = false; http.request(options1, function(response) { response.setEncoding('utf8'); response.on('data', function (chunk) { var end = new Date(); console.log(myCounter + ' BODY: ' […]

Node.jsstream如何工作?

我有一个关于Node.jsstream的问题 – 特别是他们如何在概念上工作。 不乏关于如何使用stream的文档。 但是我很难在数据层面find数据stream的工作原理。 我对Web通信(HTTP)的理解有限,就是数据的完整“包”被反复发送。 与订购公司目录的个人相似,客户端向服务器发送GET(目录)请求,服务器响应该目录。 浏览器没有收到目录的页面,而是整本书。 节点stream可能是多部分消息? 我喜欢REST模式 – 特别是它是无状态的。 浏览器和服务器之间的每一次交互都是完全独立和充分的。 节点stream是不是RESTful? 一位开发人员提到了与套接字pipe道的相似性,这使得连接保持开放。 回到我的目录订购的例子,这是否会像电视广告的“等等,还有更多! 而不是完整的目录? 大部分数据stream是接收方“下游”发送消息的能力,如上游的“暂停”和“继续”。 这些消息由什么组成? 他们是POST吗? 最后,我对Node工作方式的有限理解包括这个事件循环。 函数可以放置在线程池的不同线程中,并且事件循环继续。 但是,不应该发送数据stream保持事件循环占用(即停止),直到stream完成? 请问如何继续监视来自下游的“暂停”请求?事件循环是否将该stream放置在池中的另一个线程上,当遇到“暂停”请求时,检索相关线程并暂停它? 我已经阅读了node.js文档,完成了nodechool教程,构build了一个heroku应用程序,购买了两本书(真实的,自包含的,书籍,有点像以前说过的目录,可能不像节点stream),问几个“节点”教练在代码bootcamps – 都讲述如何使用stream,但没有人谈论下面实际发生的事情。 也许你遇到了一个很好的资源解释这些工作? 也许对于一个非CS的头脑来说,一个好的拟人化的比喻?