Articles of http

我应该怎样限制我的POST每秒速率?

我正在使用Hapi.js构build一个API。 我的一些代码将less量的数据推送到API。 这个问题似乎是推送器代码淹没了API,我得到ECONNRESET错误 – 这意味着消息正在消失。 我打算在推送器代码中安装限速器,可能是node-rate-limiter ( 链接 )。 问题是,我应该如何设定这个限制? 我想最大限度地提高这个应用程序的性能,所以我可以很容易地尝试每小时发送数千条消息。 数据只是被转储到redis,所以我怀疑在API中的代码将是一个问题,但我仍然需要知道什么样的消息率Hapi舒适。 我需要从一些合理的东西开始,看看它是怎么回事? 也许每10毫秒1条消息? Hapi = require('hapi'); server = new (Hapi.Server); server.connection(port: config.port, routes: { cors: { origin: ['*'] } }); server.route({method: 'POST', path: '/update/{id}', …})

无法使用节点请求模块进行基本的HTTPvalidation

我正在使用mochatesting我的应用程序,我想testing一个HTTP响应头代码,这取决于我通过基本的HTTP身份validation发送给它的凭据。 在客户端,我做了这样的AJAX调用服务器: $.ajax({ type: 'GET', url: url, beforeSend: function(xhr){ xhr.setRequestHeader("Authorization", "Basic " +btoa("username:password") ); }, success:function(rsp){ // do whatever I need; } }); 它完美的作品。 它的凭据是错误的,那么该网站将回应智慧302 在我的testing文件( 摩卡 ),我尝试发送相同的请求,但由于某种原因,它不工作。 这是我尝试的不同方式: it('should return 302 because wrong credentials', function(done){ var auth = "Basic " +new Buffer("username:password").toString('base64'); var options = { url: url, headers: { "Authorization": auth } }; […]

从Node.js连接到SOAP服务器,产生ECONNRESET错误

我正尝试使用HTTP请求从Node.js连接到SOAP服务器。 然而,它或多或less地产生了一个ECONNRESET错误。 我相信这是与超时,但似乎无法解决它。 我似乎无法弄清楚问题所在。 端口,主机和path都是正确的。 我的HTTP请求是: var postRequest = { host : "t1.webservice.secure.ddts.defra.gov.uk", path: "/defraDataTransferPublicNWSE.asmx", SOAPAction: "http://www.defra.gov.uk/TransferData", port: 443, method: "POST", headers: { 'Content-Type': 'text/xml; charset=utf-8', 'Content-Length': Buffer.byteLength(body2) } }; var buffer = ""; var req = http.request( postRequest, function( res ) { console.log( res.statusCode ); var buffer = ""; res.on( "data", function( data ) […]

在NodeJS中的Socket.io

我在一个NodeJS应用程序中使用socket.io 。 socket.io页面位于localhost:8081/socket.io/ 。 不过,我想在localhost:8081/hola/socket.io/ 。 那可能吗? var express = require("express"); var app = express(); var server = require("http").Server(app); var io = require("socket.io")(server); //some code here… server.listen(8081, function() { console.log("Server running at http://localhost:8081/"); });

TypeError:client.getReceiver不是azure-iot-device-http示例中的函数

我正在使用azure-iot-device-http ,并运行入门代码: var clientFromConnectionString = require('azure-iot-device-http').clientFromConnectionString; var Message = require('azure-iot-device').Message; var connectionString = 'myHostname,myDevice,myKey; var client = clientFromConnectionString(connectionString); var msg = new Message('some data from my device'); client.sendEvent(msg, function (err) { if (err) console.log(err.toString()); }); client.getReceiver(function (err, rcv) { rcv.on('message', function (msg) { console.log(msg); rcv.complete(msg, function () { console.log('completed'); }); }); rcv.on('errorReceived', function (err) { […]

为什么许多websocket库实现自己的应用程序级别的心跳?

例如, socket.io具有pingInterval和pingTimeout设置,hapi的nes具有相似的心跳间隔设置。 这表面上是为了防止像过度热心的代理这样的任何中间体closures似乎是不活跃的连接。 但ping / pong框架是websocket协议的一部分,并且似乎达到了相同的目的。 那么为什么websocket库的实现者在应用层增加了另一个ping / pong层呢? 如果我被推测,那么万一websocket服务器正在处理一个不响应/支持websocket协议级别ping-pong的客户端。

为什么NodeJS / restify服务器*很less*报EPERM接受?

我正在NodeJS中运行restify服务器。 在非常罕见的情况下,按照HTTPS请求的0.05%的顺序导致net.js报告以下错误: Error: accept EPERM at exports._errnoException (util.js:742:11) at TCP.onconnection (net.js:1280:24) HTTP请求没有什么特别之处。 在报告这个错误之前,服务器可能已经服务了数千个请求,甚至响应了几十个相同的请求。 我一直无法find任何有关为什么服务器可能会为已成功接受连接几个小时的套接字生成EPERM错误的任何信息。 顺便说一下,这个错误发生在我们源代码的任何执行上下文之外。 所以EPERM并不像我们的代码访问文件或执行其他系统调用。 当新的请求到达时,在我们的代码被调用之前,EPERM正在NodeJS TCP代码的深处发生。 起初,当发生错误时,会导致NodeJS终止。 那么我添加了代码来捕获应用程序级别的exception: process.on("uncaughtException", onUncaughtException ); 但是因为我不知道这个错误是怎么发生的,所以还不清楚恢复过程是什么。 不知道它是否会影响,但这里是与启动restify服务相关的大部分代码: var restify = require("restify"); // skipping some other init code // configuration data is read from a JSON file var serverOptions = { name: configuration.server.name, version: configuration.server.version, formatters: { "application/json": […]

我应该发送多less个并发http请求?

我需要同时发送大约50或60个请求到远程服务器。 我对networking了解不多。 我刚刚意识到,例如: 发送5次请求10次与发送50次请求完全不同 怎样才能知道同时发送的最高“并发”HTTP请求数量?

如何使用Node.js将HTTP请求中的图像显示到外部API

我有一种情况,为了获取我正在构build的网站的图像,我需要向外部服务器发送http请求以获取信息。 目前,来自请求的响应有两种forms,XML和图像。 我正在使用Node.js. 对于XML,我可以毫无问题地parsing它,并且可以将它传递给一个variables并像其他所有处理一样。 随着图像,我卡住了,我不知道如何让他们“显示”在他们的请求后,在网页上。 我所能得到的最远的地方是在邮递员中正确设置请求。 我的问题是,我可以从正在向另一个服务器发出的请求的响应主体中提取图像,并将其显示在我正在构build的Web应用程序中? 我对后端世界非常陌生,我正在努力学习。 这是我能够find并用于parsing从API获得的XML响应的一个例子 var request = require("request"); var express = require("express"); var jsxml = require("node-jsxml"); var app = express(); var fs = require("fs"); app.get('/users', function(req,res) { console.log("List of users requested."); // We will grab the list of users from the specified site, but first we have to grab the […]

尝试通过node.js http POST到“graph.facebook.com”时,发生“读取ECONNRESET”错误

尝试通过node.js http模块向“graph.facebook.com”发送POST请求,但每次都要读取“ECONNRESET”。 所有参数都是有效的 – 通过curl检查相同的请求,它的工作原理。 var http = require('http'); var token = "…"; sendTextMessage(XXX, "Text received"); function sendTextMessage(sender, text) { var messageData = { text:text }; var json = { recipient: {id:sender}, message: messageData, }; var body = JSON.stringify(json); var options = { host: "graph.facebook.com", path: '/v2.6/me/messages?access_token=' + token, port: 443, method: 'POST', headers: {'Content-Type': […]