Articles of 保持活动

请求中止请求时停止/中止请求

我正在使用NodeJS的Restify模块。 也许这是KeepAlive的问题,但是当用户取消对我的API的请求时,我想放弃或停止我的REST服务的所有内部进程。 例如,当在Postman中,你正在做一个消耗30秒的请求,但是你希望在第二个10秒后取消它…我想在服务器上停止这个过程。 任何想法? 我如何实现它? 谢谢。

在Node.js中发送多个HTTP请求:没有收到任何响应或超时

我正在处理维基百科文章,并希望收到所有维基百科文章的列表。 为了做到这一点,我经常发送http请求到维基百科API,它允许你在时间接收500个标题,并且还返回一个apcontinuestring,当在下面的请求中使用时,将返回从该string开始的标题。 为了做到这一点,我使用agentkeepalive模块: var http = require('http'); var Agent = require('agentkeepalive'); var keepaliveAgent = new Agent({ keepAlive: true, maxSockets: 5, timeout: 5000, keepAliveTimeout: 3000 }); 要发送一个http请求到维基百科,我使用下面的代码: function wikipediaApiCall(params, callback) { var options = { host: 'en.wikipedia.org', path: '/w/api.php?' + createParamString(params), method: 'GET', agent: keepaliveAgent }; var callbackFunc = function(response) { var err; var str = […]

节点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设置setKeepAlive不停止与setTimeout超时

我想弄清楚Node.js的净类如何处理超时和keepalive。 我将它们设置在服务器端,观察设置这些variables有什么不同。 我注意到,如果我将Keepalive设置为以下内容: // Set keepalive socket.setKeepAlive( true, 30000 ); 它绝对会发送Keepalive数据包,我用Wireshark观察。 但是,即使我订阅套接字的超时事件,套接字也不会超时。 所以我尝试设置套接字的超时选项。 // Set timeout variables socket.setTimeout( 60000 ); 即使与keepAlive选项结合使用,在最后一次真正的传输数据包之后,套接字在60秒后仍然超时。 所以我的问题是,如果keepAlive没有做任何事情来防止套接字超时,那有什么意义呢?

在Node.js TCP套接字中testingKeepalive的function

我一直在testingNode.js TCP套接字中keepalive的function。 看来我在这里错过了一些东西! 这是我的服务器代码: var net = require('net'); function accept(socket) { socket.setKeepAlive(false); socket.on('data', function(data) { console.log("DATA"); console.log(data); }); socket.on('error', function (e) { console.log("ERROR"); console.log(e); }); socket.on('close', function () { console.log("CLOSE"); }); socket.on('end', function () { console.log("END"); }); socket.write("Hi"); } var server = net.createServer(accept); server.listen(8011); 这是我的客户代码: var net = require('net'); var socket = new net.Socket(); socket.setKeepAlive(false); […]

node.js中的socket.setTimeout()

我试图实现基于networking模块的HTTP服务器。 我需要实现保持活动,所以我打电话给sock.setKeepAlive(true) ,然后sock.setTimeout超时2秒后closures套接字。 这是我的代码: var server = net.createServer({ allowHalfOpen: false},socketListener); function start(port){ server.listen(port,'localhost'); } function socketListener(sock){ sock.setEncoding("utf8"); sock.setKeepAlive(true); sock.setTimeout(2000,function(){ sock.end("HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n"); }); sock.on("data",responser.responserCreator(sock,httpParser,baseDir,stat)); } 但是,当我第一次打开浏览器和http://localhost:1234/profile.html它工作正常,但如果我在2秒后刷新它会引发exception – 错误:Socket.writeAfterFIN [写入](net.js:274:12) 如果我评论超时everthing正常工作。 我的代码有什么问题?

closures连接而不是设置“保持活动”

我试图在一个非常简单的express应用程序禁用keep-alive设置。 我尝试了一个老版本的同样的答案 : var express = require('express'); var app = express(); app.get('/', function(req, res) { res.set('Connection', 'close'); // attempting to override default (keep-alive) res.set('Proof', 'close'); // just to show that this should modify the header value res.send('hello'); }); var server = app.listen(3000, function() { console.log('Listening on port %d', server.address().port); }); 但是, Connection仍然设置为keep-alive : $ curl […]

带保持活动标头的Node.js https.request

我想从用户的Facebook墙上拉post。 下面的代码片段工作,但它永远不会终止: var https = require('https'); facebookWall = function(user) { var options = { host: 'graph.facebook.com', port: 443, path: '/me/home?access_token=' + user.facebook_token + '&since=' + encodeURIComponent(user.facebook_timestamp), method: 'GET', headers: { 'Connection':'keep-alive' } }; var req = https.request(options) .on('response', function(response) { var body = ''; response.on('data', function(data) { body += data; try { var wallPosts = […]

PHP,nodeJS和会话

我有一个经典的Apache服务器提供的PHP文件,和一个nodeJS服务器(与socket.io,但没有快速/连接)用于实时事件pipe理该PHP网站。 我有时需要authentication连接到nodeJS服务器的客户端,但是当用户重新加载页面时,这个authentication会丢失,因为它也重新加载了socket.io客户端(我在服务器上存储了套接字ID,每次刷新都会丢失) 问题是:有没有办法保持连接在socket.io,或链接的Apache PHP会话和nodeJS服务器的方式? 或者也许一种方法来保持使用cookie的身份validation(知道我必须存储敏感数据,如用户密码和密钥)?

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 […]