Tag: http

使用nodejsparsingPOST时的“WebKitFormBoundary”

我已经实现了HTTP服务器parsingPOST的帮助从http://blog.thekfactor.info/posts/an-introduction-to-node-js-and-handling-post-requests/ (只是我不想使用快递。) 但是,我得到了什么 [2013-10-10 10:27:29.670] [INFO] console – —— WebKitFormBoundaryMjfXHTTJYUdOInJ4 Content-Disposition:form-data; NAME = “路线” connector.sgtrackHandler.log —— WebKitFormBoundaryMjfXHTTJYUdOInJ4 Content-Disposition:form-data; NAME = “体” {“appid”:“1234”,“event”:“test”,“params”:{}} —— WebKitFormBoundaryMjfXHTTJYUdOInJ4– [2013-10-10 10:27:29.671] [INFO] console – {'—— WebKitFormBoundaryMjfXHTTJYUdOInJ4 \ r \ nContent-Disposition:form-data; name':'“route”\ r \ n \ r \ nconnector.sgtrackHandler.log \ r \ n —— WebKitFormBoundaryMjfXHTTJYUdOInJ4 \ r \ nContent-Disposition:form-data; NAME = […]

nodejs – fs.createReadStream()。pipe,如何知道文件大小问题

我写我自己的HTTP模块,如果我需要用二进制文件,例如.jpg, 我使用: body = fs.createReadStream(pathOfFile)加载文件。 当我生成的响应我使用: body.pipe(socket); 但作为HTTP响应,我想添加一个Content-Length头。 我找不到一个简单的方法来做到这一点,fs.stat不会立即给出结果,而是在我调用pipe之后。 无论如何知道要在Content-Length头中发送什么。 ? 谢谢。

使用express.js进行路由 – 无法获取错误

第一次使用express.js ,而且我坚持添加我的第一条路线。 我的路线在app.js是这样定义的: app.get('/user/:id/photos', function(req,res){ res.send('user' + req.params.id); }); 但是,curl到http://localhost:3000/user/1/photos只会导致“无法GET”错误。 Express中包含的索引文件似乎工作得很好。 这是我的快速app.js文件: var express = require('express'), routes = require('./routes'); var app = module.exports = express.createServer(); // Configuration app.configure(function() { app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.configure('development', function() { app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function() […]

我如何发送一个string旁边的错误代码与快递?

所以当一个login无法validation时,我目前respong与res.send(401)。 不过,我想发送一段文字或HTML与错误代码。 我试过这个: res.write('string'); res.send(401); 但抛出一个错误,我的服务器无法启动。

如何在Node.js中设置最大的http客户端连接

我需要增加我写的模块可用的出站http套接字的数量。 我知道这是可能的全球使用: // increase max sockets http.globalAgent.maxSockets = 1000; 在不影响其他模块的情况下创build模块的maxSocket限制的最佳模式是什么?

Node.js:http.Server,http.Agent,套接字和http.request之间的关系

根据文档 : Node.js为每个服务器维护几个连接来发出HTTP请求。 这个function允许透明地发出请求。 该文档进一步指定Node默认情况下依赖于http.globalAgent发出请求,但是您可以通过创build一个新的http.Agent来使用自己的代理。 代理被用来为http请求“池套接字”。 我对这一切的解释是,每当你做一个http.createServer ,默认情况下你会得到几个套接字(大概就是“连接”的意思)来做http请求,这些套接字由http.globalAgent集中/pipe理。 什么是不清楚的是当你创build自己的http.Agent会发生什么。 Agent是否“接pipe”了先前由http.globalAgentpipe理的http.globalAgent ? 还是你必须通过agent.createConnection为你的新Agent创build一个新的套接字? 在相关说明中,如果我要在同一个节点进程中启动两个服务器,然后发出http请求,例如 const server1 = http.createServer(function(req, res) { res.end('Hello from server1'); }).listen(3000); const server2 = http.createServer(function(req, res) { res.end('Hello from server2'); }).listen(5000); http.get('/someurl'); 请求从哪个服务器发出? http.Agent在这里发挥作用吗?

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; }) 。 这似乎是一个杂凑虽然。