Articles of http

为什么我在Node的HTTP服务器上有这么多连接事件?

我有一个使用socket.io的Web应用程序。 它在本地机器上运行localhost:8000。 为了在我的应用程序中find令人讨厌的资源泄漏,我尝试在我的HTTP服务器上注销连接事件: server.on('connection', function(conn) { //log out connection details }); 在页面加载后,当我在浏览器中打开页面时,可以在日志中看到多个连接事件 – 如下所示: connection established: 127.0.0.1:54148 connection established: 127.0.0.1:54149 connection established: 127.0.0.1:54146 connection established: 127.0.0.1:54152 connection established: 127.0.0.1:54144 connection established: 127.0.0.1:54155 奇怪的是,我没有创build一个WebSocket连接后,页面加载 – 只有当用户点击一个button。 但是我没有点击任何button,我仍然看到这些奇怪的联系。 如果我点击我的button来连接到我的服务器socket.io日志显示一个新的连接: connection established: 127.0.0.1:54155 幸运的是,我在日志中看到的每个连接都在一段时间后closures – 所以我猜这不能成为我资源泄露的原因。 但我仍然好奇:是什么原因导致这些连接事件? 为什么端口号这么奇怪(不是我的服务器监听的8000)? 编辑: 我的服务器configuration不是一个特殊的。 在server.js : var express = require('express'); var app […]

带有NodeJS GET请求的AngularJS失败 – “Access-Control-Allow-Headers不允许Access-Control-Allow-Headers”

我一直在寻找一些类似的问题寻找答案,但我找不到它。 我有一个具有express的node.js服务器: app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Headers"); next(); }); app.use(express.static(__dirname+'/assets')); app.use(bodyParser.json()); app.get('/', function(req, res, next) { res.sendFile(__dirname + '/public/index.html'); }); 和AngularJS一起使用GET请求到一个REST API。 它们由search表单中的键入事件触发。 app.config: app.config(function ($httpProvider) { $httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = 'Authorization, Access-Control-Allow-Headers'; $httpProvider.interceptors.push('TokenInterceptor'); }); …和请求代码本身: $scope.requestMovies = function() { $http.get('http://www.omdbapi.com/?s=' + $scope.titleToSearch + '&type=movie&r=json') .success(function(data, […]

如何编写一个检查响应返回数据的http请求testing?

我在我的AccountsApiHandler模块中有以下方法,我想写一个testing,确定帐户是否正确返回。 如果我从我的一个testing中调用这个方法,我如何检索帐户列表? AccountsApiHandler.prototype.accounts = function (req, res) { var self = this /* * Get list of accounts */ if (req.method === 'GET') { return self.server.accounts.listAccountAsJson() .pipe(JSONStream.stringify()) .pipe(res); } }; 这是我的testing,使用hammock npm模块来生成我的模拟请求和响应对象。 这个testing假定现有的帐户已经在testing数据库中了:var test = require('tape')var hammock = require('hammock')var accountsApiHandler = require('../../ handlers / accounts-api' )() test('create initial accounts', function (t) { request = hammock.Request({ […]

HTTP标头上有多个值

它是否正确? var headers = new Headers(); headers.append('Accept', 'application/json, application/pdf') 我想接受json和pdf文件。

在nodejs中parsingchunked-encoded http响应的最好方法是什么?

我必须使用自定义方法名称STATS ,它不受nodejs http模块的支持。 所以,我决定使用TCP套接字: feed.socket = net.createConnection(config.port, config.host); feed.socket.on('connect', function() { feed.socket.write( 'STATS / HTTP/1.1\r\n' + 'Authorization: Basic ' + new Buffer(config.user + ':' + config.password).toString('base64') + '\r\n' + 'User-Agent: custom-http-client/0.0.1\r\n' + 'Host: ' + config.host + '\r\n' + 'Accept: */*\r\n\r\n' ); }); feed.socket.on('data', function(chunk) { console.log(chunk.toString()); }); 我执行连接后,服务器发送标题,然后开始通过持续连接发送数据块: HTTP/1.1 200 OK Server: nginx/1.6.2 Date: […]

无法进行无端口转发的通信

嗨,我们有一个IOT项目,有一个正在运行的网站+ Android应用程序,这是在Node.js服务器上制作的,并使用HTTP协议与REST API与德州仪器(TI)的embedded式设备CC3200进行通信。 该项目通过从networking或手机发送信息到控制箱CC3200控制加热床,控制箱将指令发送到加热床。 问题 : 我们需要在某些端口上进行端口转发,我们需要摆脱它 CC3200当post变为网页时,除非刷新页面,否则无法看到更改。 我研究并发现,有两种可能的解决scheme,要么使用IO.js,要么切换到MQTT。 但在项目的最后阶段,这两个解决scheme似乎都是从一开始就开始的。 任何帮助,将不胜感激。 PS:端口转发是一个大问题

从http获取到http发布stream文件

我有2个服务器,我想从一个GET请求获得一个文件,并通过POST请求发送到另一个服务器。 最简单的解决scheme是从第一台服务器存储文件,然后(一旦下载完成)发送到另一台。 但是,不是两次做,而是一次性做。 我尝试直接从get到post的数据stream。 我有以下代码: var stream = function(getOptions, postOptions, dest, cb) { var fileRead = fs.createWriteStream(dest); var getRequest = https .request(getOptions, function(response) { response.pipe(fileRead); fileRead.on('finish', function() { fileRead.close(cb); }); }) // .on('error', function(err) { // fs.unlink(dest); // }) .end(); var fileWrite = fs.createReadStream(dest).pipe(https.request(postOptions).end()); } 该文件得到正确,但我不知道如何将数据直接发送到第二台服务器。 我试过上面的代码,它不工作(dest在不是一个函数)。 参考文献: 在Node.js中通过HTTP发送大型图像数据 谢谢!

如何处理传递给返回URL的HTTPcallback?

我一直被困在一个问题,其中,我正在向MBLOX HLR API发出一个请求,以validation下面的电话号码, https://hlrlookup.cardboardfish.com/HLRQuery?USERNAME=test&PASSWORD=test&RETURNTYPE=h&RETURNADDRESS=http://www.myurl.com&MSISDN=27837797094,27123456789 这将返回给我们如下的回应: 好的267492492 267492493 它会调用上面指定的RETURNADDRESS的HTTPcallback。 这将是一个GET请求,如下所示: GET / hlr?Status = Invalid&Ported = No&ErrorCode = 1&MSISDN = 27123456789&QueryID = 267492493&AccountID = 1546&ErrorDescription = Unknown%20Subscriber HTTP / 1.1 有人可以告诉我如何处理返回地址上面的GET HTTPcallback? 我正在使用Express,以下是我正在使用的代码: app.post('/validatePhoneNumbers',function(req,res){ body = "test"; var lines = req.body.phoneNumbers; phoneNumberVlaidationResults = {}; url = "http://hlrlookup.cardboardfish.com/HLRQuery?USERNAME=test&PASSWORD=test&RETURNTYPE=h&RETURNADDRESS=http://localhost:4000/validatePhoneNumbersCallback&MSISDN=" + lines; var request = http.get(url, function (response) { […]

HTTP代理:拒绝半处理的请求

我有基于Node.js的HTTP代理,它以stream的方式转换响应正文。 例如,我的代理像nginx一样工作,它压缩(使用libz作为gzip)响应主体。 但是我有一个疑问:如果数据交换期间上游连接发生错误,该怎么办? 如何通知客户关于en错误,当响应已经发送和正在发送正在进行中。 客户端的错误确定的复杂性基于Content-Length由于源和经转换的数据不匹配而不存在响应的事实。 为了澄清一些细节,我添加了一段简单的代码: var express = require("express"); var http = require("http"); var url = require('url'); var webApp = express(); var httpServer = webApp.listen(8080, function () { console.log("server started on ", 8080, " port"); }); webApp.get("*", function(req, res) { var targetRequest = http.get(req.originalUrl, function (upstreamResponse) { if (upstreamResponse.statusCode != 200) { res.status(500).send("Internal Server […]

在将文件传输到客户端之后,res.end()不会被发送

我基本上是试图从MongoDb文件stream到客户端。 该文件接收没有问题,但是当stream结束,我尝试发送request.end()客户端永远不会得到它。 app.post('/upload', function (req, res) { var db = new mongo.Db('prueba', new mongo.Server("127.0.0.1", 27017)); db.open(function (err) { if (err) return handleError(err); var gfs = Grid(db, mongo); console.log(req.filename); var uploadedSize = 0, uploadProgress = 0; idPdf = new ObjectId(); //cliente crea un id de mongo, el cual se utilizara para traer el recurso despues console.log(idPdf); […]