Articles of http

NodeJS HTTP请求不按顺序执行

首先,但感谢大家的所有信息! 在这个问题上。 我有一些代码,我试图遍历一个JSON文件,并执行数组中的每个对象的HTTP获取请求。 这个问题似乎出现在我正在执行http get请求时,它不这样做,也没有完成。 它大约6-9对我的API调用后挂断。 示例JSON: [ { "Name": "ActClgStpt", "Address": 326, "Slot": 1 }, { "Name": "ActHtgStpt", "Address": 324, "Slot": 1 }, { "Name": "AdvanceCool", "Address": 21, "Slot": 1 } ] 迭代JSON: sedona.jsonInputAddress('Unit1GWRenton', logMe); function logMe() { for(var i in config) { var name = config[i].Name; var address = config[i].Address; var slot = […]

使用Alexa和JS的HTTP发布

我试图获得一个Alexa技能(JS / Lambda)使用HTTP.request将值发布到REST服务器。 我正在尝试一些简单的事情来完成工作。 我想我错过了一些明显的东西。 理想的技能使用 我说,“Alexa,告诉testing五”。 Alexa将代码中指定的URL更新为5。 Alexa说:“我已经把价值更新到了五点。” 问题 我有两个问题: 口语与打字的话语 。 如果我在亚马逊服务模拟器(“五”)中键入我的插槽值,该值将发布到我的服务器,因为它应该是。 但是,如果我说同样的话,即使Alexa正确地识别了这些单词(通过查看应用程序中的卡片确认),该值也不会被发布,并且她说:“我找不到问题的答案。 在哪里以及如何调用输出function 。 我想我需要添加类似下面两行的内容,但是根据我在当前代码中添加的位置,Alexa会响应而不更新节点,或者什么也不做。 var text = 'I have updated the value to' + targetSlot; output( text, context ); 调用名称 posting test 意图架构 { "intents": [ { "intent": "writeTarget", "slots": [ { "name": "Target", "type": "NUMBER" } ] }] } 示例话语 […]

如何在node.js中中止http连接干净地closuresFD

我正在玩节点,并且(目前)只是试图通过HTTPstream式传输文件系统中的一些文件。 我的OS X Lion机器上的Apache Bench(ab)应用程序有问题,似乎过早地中断了连接。 这似乎突出了一个问题,我的node.js应用程序泄漏文件句柄,如果连接中止。 我已经减less了这个简单的node.jstesting用例。 当我启动它并运行“ab”时,由于打开文件句柄太多,我最终得到EMFILEexception: // app.js var count = 0; require('http').createServer(function(req,res){ console.log('request ' + ++count); res.writeHead(200); require('fs').createReadStream( '/Users/tom/files/8339cdf73594d8f0aab87da123e9e0380723b471' ).pipe(res); }).listen('3000'); $ node app.js request 1 … request 317 request 318 request 319 stream.js:105 throw er; // Unhandled stream error in pipe. ^ Error: EMFILE, too many open files '/Users/tom/files/8339cdf73594d8f0aab87da123e9e0380723b471' 我假设发生的事情是HTTP连接被中止,但节点的.pipe()机制不知道停止从可读stream中读取并closuresFD,所以我试图处理HTTP ServerRequest上的'close'事件并销毁的FD,但似乎仍然从它读取,因为我得到一个错误的FD错误(EBADF),而不是: […]

如何检查实际内容长度与Content-Length标题?

用户可以将文档发布到我们的Web服务。 我们把它stream到别处。 但是,在stream媒体播放的最后,我们需要确定他们没有说谎他们的内容长度。 我假设,如果headerContentLength > realContentLength ,请求将只是等待他们发​​送其余的,最终超时。 所以这可能是好的。 那么如果headerContentLength < realContentLength ? 也就是说,如果他们说完成后继续发送数据呢? 这是由Node.js以任何方式照顾? 如果没有,检查什么是好方法? 我想我可以只计数一些data事件监听器里面的字节—例如, req.on("data", function (chunk) { totalBytes += chunk.length; }) 。 这似乎是一个杂凑虽然。

使用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来实现这一点,而不必避免侵入其核心文件。 任何想法,如果这是可能的和如何?