Articles of http

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

嗨,我们有一个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); […]

节点http服务器4 x更快保持活动禁用?

保持活力应该加快网站。 但是,当我在铬(本地主机:8080)运行这个死了简单的服务器,我得到这些加载时间: 大约100毫秒与“连接:closures”标题(即与setHeader行未注释) 大约400毫秒,启用标准保持活动状态 。 我究竟做错了什么 ? 任何人都可以重现我的结果吗? 在过去的两天里,我一直在b my我的脑袋。 var fs = require('fs') // preparing 50 2k files … var a = [], txt = '/*\n' + 'x'.repeat(2000) + '\n*/' for (var i = 0; i < 50; i++) { var name = '/test' + i + '.js' fs.writeFile(__dirname + name, txt) a.push('<script src="' […]

删除&符号node.js POST请求

我在configuration中使用app.use(express.cookieParser())在我的packager.json文件中有一个快速版本"express": ">= 3.4.7" 。 我正在从REST客户端内容types发送一个POST请求给我的API作为"application/json" 。 我曾经通过调用req.body来获取发布参数。 一切为我工作到现在,但注意发送像下面的东西 { "password":"tom&catin", } 在节点js中 console.log('password', req.body.password); // tom&amp;catin 我想知道为什么“&”打印为“&”。 我想获得'&'作为'&'进行服务器端密码validation。 让我知道什么是做错了? 我需要实现'urlencode'吗? 我尝试过,但结果相同。 app.use(express.bodyParser());

node.js – 尝试使用Parse Server查询时,Heroku服务器超时?

我正在尝试为Parse服务器设置自己的自定义密码重置,因为当时没有该function。 我已经按照堆栈溢出本教程 – > 如何使用Heroku设置一个分析服务器 我也读过Github上的这个问题 – > 实现密码重置的提示? 以下是我在Github上发表的一篇指南: 用于处理密码重置提交的快速路由或云端function,用于查询与用户名/电子邮件匹配的用户。 生成一次性随机代码并将其保存在用户的某个位置…使用某个邮件提供商,通过链接向用户发送电子邮件。 一个处理链接的快速路由,它将提供的随机代码和search用户进行validation,然后向用户显示提供新密码的能力…使用主密钥覆盖密码并保存用户。 我设法完成了第一段,通过链接向用户发送电子邮件。 现在我正在尝试设置一个处理链接的快速路由,并为用户查询,但是我的分析查询似乎没有工作,而且heroku保持超时。 这是我的index.js (parsing服务器附带的默认类)中的代码,用于设置一个从链接中获取用户name的快速路由,并执行一个查询来获取用户,然后发送username 。 *注意我知道得到一个用户的name ,然后查询是不可扩展的,它只是仅用于testing目的。 //Testing web routes app.get('/route', function(req, res) { var query = new Parse.Query("_User"); query.equalTo("name", req.param("id")); query.get({ success: function(user) { res.status(200).send(user.get("username")); }, error: function(error) { res.status(200).send("error"); } }); }); 这是我点击的链接: 然后发生什么,我不明白的是页面不断加载,然后约30秒后Heroku超时,并在网页上显示此错误: 然后当我检查我的日志在heroku上: 我注意到这个错误: at=error code=H12 desc="Request timeout" […]

urlpath包含未转义的字符

我得到以下错误。我知道我需要逃脱几个字符,但有没有更好的方法来做到这一点? 我的pathvariables有一些错误 getNearByUsers(latlong) { return http.get({ host: 'search-vegme-user-7l3rylms73566frh4hwxblekn4.us-east-1.cloudsearch.amazonaws.com', path: '/2013-01-01/search?q=nikhil&expr.distance=haversin(35.621966,-120.686706,latlong.latitude,latlong.longitude)&sort=distance asc&return=distance,displayname,profileimageurl' }, function(response) { // Continuously update stream with data var body = ''; response.on('data', function(d) { body += d; }); response.on('end', function() { // Data reception is done, do whatever with it! var parsed = JSON.parse(body); console.log(parsed); }); }); } "errors": [ { "message": […]

Angular 2的http请求在新系统上处于挂起/取消状态

我发送http请求如下 this.http.post('/api/login', body) .subscribe( response => { … }, error=> { … }); 但是在新的系统中,它有待等待,然后有时取消。 加载一次后,再也没有发生在该系统上,并正常工作。 基本上我将所有客户端路由redirect到index.html。 如下: app.get(['/', '/login', '/dashboard'],function(req, res, next){ res.sendFile(path.join(__dirname,'/../public/index.html')); }); '/', '/login', '/dashboard'是我客户端的路由。 如下: @RouteConfig([ { path: '/', redirectTo: ['/Dashboard'] }, { path: '/login', component: Login, as: 'Login' }, { path: '/dashboard', component: Dashboard, as: 'Dashboard' } ])