Articles of http

如何确定Node.js服务器响应是否停止?

我怎样才能确定server.HttpResponse停止,而不听“结束”或“closures”事件? 我想要达到的是这样的: http.createServer(function (request, response) { var foo; // my event emitting object // … something compilated happens here … foo.onSomeEvent(function () { if (response.hasEnded) { // do something } }); });

Angular 2 SimpleChanges Object在第一个npm开始时抛出错误

在我的angular2应用程序中有一个组件,其中包含一个对象数组,将所选(单击)的对象传递给它的直接子组件。 这会显示更详细的数据。 我正在使用“SimpleChanges”function来观察这个子组件,如果给定的对象改变成另一个http请求来从数据库中获取相关的注释。 如果我尝试用npm构build它,我会得到一个错误,并说: app / displayEntry.component.ts(23,41):错误TS2339:types'SimpleChanges'上不存在属性'entry' 如果我只是评论这部分,启动npm,并最终把它放在那里,并保存它,没有问题了(没有错误,它的工作原理)。 我的问题是,是否有办法解决这个问题,这会导致什么麻烦,以后我不能预见,还是应该忽略它? 谢谢你的帮助 父组件: import { Component, OnInit } from '@angular/core'; import { entry } from './Objekte/entry'; import { entryService } from './entry.service' @Component({ templateUrl: 'app/Html_Templates/displayLastEntrys.template.html' }) export class displayLastEntrys implements OnInit{ public entrys : entry[]; private entryChoosen: boolean; private ChoosenEntry : entry; constructor ( private entryservice : […]

Nodejs http在超时或错误时重试

我试图在超时或错误时自动重试HTTP请求。 目前我的代码如下所示: var req = http.get(url, doStuff) .on('error', retry) .setTimeout(10000, retry); 但是,单个请求有时会触发“出错”和“超时”事件。 什么是更好的实施重试的方式?

端口3000在Express应用程序中的意义

我注意到Express.js应用程序的几乎所有示例都使用端口3000作为HTTP服务器的默认侦听端口。 这是因为它是一个很less使用的端口,或者是否有任何其他原因的端口号? 如果我想在本地机器上并排运行多个应用程序,使用像3000,3001,3002等端口是不是很好? (我理解,理想情况下,你会让系统分配端口,这只是一个简单的问题,为什么3000似乎是一个传统的任务。)

对Node.js不支持HTTP方法的HTTP响应?

一般而言,这对于HTTP更具体,但是我使用Node.js作为我的平台。 在HTTP服务器上处理不被接受的HTTP方法时,最好的办法是什么? 目前,我支持PUT和GET,但不支持POST。 如果发出POST请求,我应该返回一个403还是405?

Node.js将响应对象句柄的句柄传递给subprocess

我有一个http服务器和分叉subprocess。 我希望父级接收请求并使用worker.send传递给分叉进程。 并且工作人员应该能够使用相同的响应对象处理并将响应发送回请求者。 我尝试发送worker.send的第二个参数中的响应对象,但它给出错误This handle type can't be sent var child_process = require('child_process'); var worker = child_process.fork(filename); http.createServer(function (req, res) { worker.send({ 'event': 'start' }, res); // send response object }).listen(4000); 我检查了child_process.js文件,它说如果它不属于某些types,它会抛出错误。 我想知道是否有其他选项可以将响应对象发送给分叉的孩子。 编辑: 好的,这是我发现的,我只是改变了以下 // Instead of // worker.send({ 'event': 'start' }, res); worker.send({ 'event': 'start' }, res.socket); 分叉的进程能够调用write的处理程序。 这是对的吗? 我可以用这种方式吗? 或者在一些等等条件下会有什么暗示?

响应编码与node.js“请求”模块

我正在尝试从BingsearchAPI获取数据,而且由于现有的库似乎基于旧的停用的API,所以我尝试使用request库,这似乎是最常见的库。 我的代码看起来像 var SKEY = "myKey…." , ServiceRootURL = 'https://api.datamarket.azure.com/Bing/Search/v1/Composite'; function getBingData(query, top, skip, cb) { var params = { Sources: "'web'", Query: "'"+query+"'", '$format': "JSON", '$top': top, '$skip': skip }, req = request.get(ServiceRootURL).auth(SKEY, SKEY, false).qs(params); request(req, cb) } getBingData("bookline.hu", 50, 0, someCallbackWhichParsesTheBody) Bing返回一些JSON,我可以使用它, 但如果响应正文包含大量的非ASCII字符JSON.parse抱怨该string格式不正确。 我尝试切换到一个ATOM内容types,但没有区别,该XML是无效的。 检查request()callback中提供的响应主体实际上显示错误的代码。 所以我尝试了一些Python代码的相同的请求,似乎一直工作正常。 以供参考: r = requests.get( 'https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27web%27&Query=%27sexy%20cosplay%20girls%27&$format=json', auth=HTTPBasicAuth(SKEY,SKEY)) stuffWithResponse(r.json()) […]

如何在nodejs中closures请求?

我拥有的: 我使用expression式 框架使用node.js ,并且我正在构build一个可以上传文件的表单,我正在使用node-formidable 。 有什么问题 我的问题是,我无法closures请求,如果我发现上传的文件错误。 我想检查文件types,大小等。所以我可以得到正确的file upload,而文件实际上没有上传,所以我不浪费时间。 所以问题是我无法停止HTTP请求。 我曾经尝试过 这是我迄今为止所尝试的: request.connection.destroy(); response.end('something went wrong…'); 我假设connection.destroy()中止请求,我知道这是因为它触发formidableforms中止事件( form.on('abort', function(){ … }) )但该文件仍在上传,并且该响应没有在file upload之后到达。 那么我应该如何closuresHTTP请求,并将消息发送回客户端呢? 编辑:和其他东西,当我不使用response.end()然后它的作品,除了客户端等待的答案,这很奇怪:\

HTTP保持在node.js中

我正在尝试设置一个HTTP客户端,以使底层连接在node.js中保持打开状态(保持活动状态),但似乎这种行为与文档不符( http://nodejs.org/api/http .html#http_class_http_agent )。 我正在创build一个新的HTTP代理,将maxSockets属性设置为1,并且每秒都请求一个url(例如http://www.twilio.com/ )。 似乎在每个请求的套接字被closures,并创build一个新的套接字。 我已经在Ubuntu 14.04下用node.js 0.10.25和0.10.36testing了这个。 有没有人能够继续工作? 这里是代码: var http = require("http"); var agent = new http.Agent(); agent.maxSockets = 1; var sockets = []; function request(hostname, path, callback) { var options = { hostname: hostname, path: path, agent: agent, headers: {"Connection": "keep-alive"} }; var req = http.get(options, function(res) { res.setEncoding('utf8'); var […]

与Python中的HTTP POST请求不一致的行为

尝试在Python(WSGI)和NodeJS + Express应用程序之间发出POST请求。 他们在不同的服务器上。 问题是,当使用不同的IP地址(即专用networking与公用networking)时,公共networking上的urllib2请求成功,但是对于专用networking的相同请求却失败,出现502 Bad Gateway或URLError [32] Broken pipe 。 我使用的urllib2代码是这样的: req = urllib2.Request(url, "{'some':'data'}", {'Content-Type' : 'application/json; charset=utf-8'}) res = urllib2.urlopen(req) print f.read() 现在,我也使用request来编写这样的requests : r = requests.post(url, headers = {'Content-Type' : 'application/json; charset=utf-8'}, data = "{'some':'data'}") print r.text 得到一个200 OK回应。 这种替代方法适用于这两个networking。 我有兴趣了解是否有一些额外的configuration需要我不知道的urllib2请求,或者如果我需要查看一些可能会丢失的networkingconfiguration(我不相信这是事实,因为替代请求方法起作用,但我肯定是错的)。 任何build议或指针与此将不胜感激。 谢谢!