Tag: http

使用Node.js + Express 2“代理”很多HTTP请求

我在Node.js + Express中编写代理2.代理应该: 根据结果​​解密POST有效载荷并向服务器发出HTTP请求; encryption来自服务器的回复并将其发送回客户端。 与encryption相关的部分工作正常。 我面临的问题是超时。 代理服务器应该在15秒内处理请求。 其中大部分实际上都在500毫秒以下。 当我增加并行请求的数量时出现问题。 大部分请求都可以正常完成,但有些在15秒+几毫秒之后失败。 ab -n5000 -c300可以正常工作,但并发度为500时,会出现一些超时的请求。 我只能推测,但似乎问题是callbackexectuion的顺序。 是否有可能首先发出的请求挂起,直到ETIMEDOUT为止,因为节点的焦点在最新的请求中,这些请求仍在500ms ETIMEDOUT处理。 PS:远程服务器没有问题。 我正在使用请求与它进行交互。 UPD 事情的方式与一些代码的方式: function queryRemote(req, res) { var options = {}; // built based on req object (URI, body, authorization, etc.) request(options, function(err, httpResponse, body) { return err ? send500(req, res) : res.end(encrypt(body)); }); } app.use(myBodyParser); // […]

为什么Net:HTTP / HTTParty调用中断Watir-Webdriver script / Net :: ReadTimeout错误

我已经build立了一个Watir-Webdriver脚本,我想要报告给远程服务: puts "Starting…" b = Watir::Browser.new :ie puts "Started browser" puts "Setting status as non-idle" request = Net::HTTP::Post.new() url = URI(HOME + '/update_status') request.body = JSON.generate({ scrapeId: SCRAPE_ID, status: 'working' }) # This step freezes processing Net::HTTP.start(url.host, url.port) {|http| http.request(request)} puts "This step never happens" 同时,node.js / express watir正在ping有以下端点: app.post('/update_status', function(req, res) { redis.hset(req.body.scrapeId, 'status', […]

无法安装Bower软件包

我有一个使用Visual Studio 2015 IDE开发的Cordova应用程序。 为了pipe理库和依赖,我尝试使用NuGet。 但看起来,NuGet无法pipe理客户端脚本,即CSS。 所以我探索了BOWER。 我使用命令npm installl -g bower安装了npm installl -g bower ,现在我可以访问所有Bower命令。 当我尝试添加jQuery和jQuery Mobile之类的依赖项时,它会尝试提取并失败。 它给出的错误是, PATH=.\node_modules\.bin;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External;%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\git "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\Bower.cmd" install –force-latest bower retry Request to https://bower.herokuapp.com/packages/jquery-mobile failed with ECONNRESET, retrying in 1.5s bower retry Request to […]

NodeJS:http.ClientRequest在特定场景中两次触发错误事件

考虑以下在nodejs中执行的javascript代码: // create ClientRequest // port 55555 is not opened var req = require('http').request('http://localhost:55555', function() { console.log('should be never reached'); }); function cb() { throw new Error(); } req.on('error', function(e) { console.log(e); cb(); }); // exceptions handler process.on('uncaughtException', function() { console.log('exception caught. doing some async clean-up before exit…'); setTimeout(function() { console.log('exiting'); process.exit(1); }, 2000); }); […]

用另一种编程语言来使用芹菜可能吗?

我听说芹菜,我真的很喜欢它。 但是现在我正在用node.js编写一个应用程序,而且我必须pipe理(asynchronous)任务,并且我想用芹菜来实现这一点。 我已经在我的开发环境中安装了它,并且使用了一些python脚本。 这一切运作良好,但我想用node.js“调用”任务。 有没有人试图做这样的事情(用任何编程语言)? 我看到这个例子 ,但这个HTTP网关的基础是django应用程序,我不想创build一个django应用程序来处理这些调用。 我想创build一个SimpleXMLRPCServer,并使用node-xmlrpc模块来连接。 你怎么看? 有更好的方法来做到这一点? 是否有另一个应用程序或服务本身与node.js工作? 提前致谢。

使用ExpressJS服务非标准的HTTP方法

我想写一个HTTP服务器,回答请求使用非标准的HTTP方法(动词)。 例如,客户端会提出一个像FOO / HTTP/.1.1这样的请求。 而在服务器端,这个请求将被处理,如: var express = require('express'); var app = express.createServer(); app.configure(function(){ app.use(express.logger({ format: ':method :url' })); app.use(express.methodOverride()); }); app.foo('/', function(req, res){ res.send('Hello World'); }); app.listen(3000); 我将我的非标准方法追加到在ExpressJS的lib/router/methods.js导出的数组中。 这使我能够按预期编写我的服务器代码。 当使用express.methodOverride()和_method=foo的POST请求时,它可以工作。 但是实际的FOO请求不起作用。 一旦客户端发送请求的第一行,连接就被服务器closures: $telnet localhost 3000 Trying 127.0.0.1… Connected to localhost. Escape character is '^]'. FOO / HTTP/1.1 Connection closed by foreign host. 我希望能够使用ExpressJS来实现这一点,而不必避免侵入其核心文件。 任何想法,如果这是可能的和如何?

如何在节点中通过HTTP读取二进制文件?

我有一个Web服务器上的图像(http://example.com/img.jpg)。 我在浏览器中打开该图像并将其保存到磁盘。 如果我通过' fs '模块( fs.readFileSync )在节点中打开文件,我得到一个以0xff开头的缓冲区,这正是我所期望的。 我希望能够直接从HTTP请求获得相同的结果。 我正在使用“请求”模块来提出请求。 request('http://example.com/img.jpg',function(error, response, body){ //code here }); 我无法弄清楚如何将响应或正文转换为与FileSystem相同的Buffer。 我错过了什么?

从NodeJS内部调用Express Route

我有一个ExpressJS路由我的API,我想从NodeJS内部调用它 var api = require('./routes/api') app.use('/api', api); 并在我的./routes/api.js文件中 var express = require('express'); var router = express.Router(); router.use('/update', require('./update')); module.exports = router; 所以如果我想从我的前端调用/api/update/something/:withParam它的所有发现,但我需要从我的NodeJS脚本的另一个方面调用它,而不必在第二个位置重新定义整个函数 我已经尝试从内部使用HTTP模块,但我只是得到一个“ECONNREFUSED”错误 http.get('/api/update/something/:withParam', function(res) { console.log("Got response: " + res.statusCode); res.resume(); }).on('error', function(e) { console.log("Got error: " + e.message); }); 我明白快递背后的想法是创build路线,但我怎么在内部打电话给他们

尝试使用协议分析器(Charles)捕获node.js httpstream量,但无法使节点使用代理

我试图捕获协议分析器(查尔斯)node.js httpstream量,但不能让节点使用代理。 有没有办法让节点http和https模块使用代理? 顺便说一句,我正在使用OSX

Node.jsstreamAPI泄漏

在玩节点stream的时候,我注意到几乎所有的教程都教了一些东西: // Get Google's home page. require('http').get("http://www.google.com/", function(response) { // The callback provides the response readable stream. // Then, we open our output text stream. var outStream = require('fs').createWriteStream("out.txt"); // Pipe the input to the output, which writes the file. response.pipe(outStream); }); 但在我看来,这是一个非常危险的代码。 如果文件stream引发exception某个点会发生什么? 我认为文件stream可能会泄漏内存,因为根据文档,文件stream显然不接近。 我应该在乎吗? 在我的选项node.jsstream应该处理情况…