Articles of http

如何正确closuresNode.js TCP服务器?

我无法在Google或SO上find明确的答案。 我知道一个net.Server实例有一个close方法,不允许更多的客户端。但它不会断开已经连接的客户端。 我怎样才能做到这一点? 我知道如何用Http来完成这个工作,我猜我是问Tcp是否一样,或者是不一样。 用Http,我会做这样的事情: var http = require("http"); var clients = []; var server = http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.end("You sent a request."); }); server.on("connection", function(socket) { socket.write("You connected."); clients.push(socket); }); // .. later when I want to close server.close(); clients.forEach(function(client) { client.destroy(); }); Tcp是一样的吗? 还是我应该做不同的事情?

客户端在Node.js上的ssl授权

我正在尝试使用自签名进行客户端授权。 首先,我正在创build证书: CA证书 openssl genrsa -des3 -out ca.key 2048 openssl req -new -x509 -days 365 -key ca.key -out ca.crt 服务器证书 openssl genrsa -out server.key 1024 openssl req -new -key server.key -out server.csr openssl x509 -req -in server.csr -out server.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 客户证书 openssl genrsa -out client.key 1024 openssl req -new […]

在Express.js中使用PUT方法

我试图实现一个Express.js应用程序的更新function,我想使用PUT请求来发送新的数据,但我不断收到错误使用PUT。 从我读过的所有内容来看,这只是使用app.put的问题,但这是行不通的。 我的路线文件中有以下内容: send = function(req, res) { req.send(res.locals.content); }; app.put('/api/:company', function(res,req) { res.send('this is an update'); }, send); 当我使用邮递员进行PUT请求时,我得到一个“不能PUT / api / petshop”的错误。 我不明白为什么我不能PUT,或者出了什么问题。

Node.js HTTP2服务器错误:套接字挂断

鉴于具有实验性HTTP2支持的最新版本的Node.js: $ node -v v9.2.0 一个HTTP2服务器: var options = { key: getKey(), cert: getCert(), allowHTTP1: true } var server = http2.createSecureServer(options) server.on('stream', onstream) server.on('error', onerror) server.on('connect', onconnect) server.on('socketError', onsocketerror) server.on('frameError', onframeerror) server.on('remoteSettings', onremotesettings) server.listen(8443) function onconnect() { console.log('connect') } function onremotesettings(settings) { console.log('remote settings', settings) } function onframeerror(error) { console.log('frame error', error) } function onsocketerror(error) […]

Mailchimp API v3.0通过NodeJS http添加电子邮件列表

我正在使用NodeJS来调用新的MailChimp 3.0 API以添加一个电子邮件到列表。 虽然我可以通过POSTMAN得到它,但我很难与Node的http: var http = require('http'); var subscriber = JSON.stringify({ "email_address": "test@test.com", "status": "subscribed", "merge_fields": { "FNAME": "Tester", "LNAME": "Testerson" } }); var options = { host: 'https://us11.api.mailchimp.com', path: '/3.0/lists/<myListID>/members', method: 'POST', headers: { 'Authorization': 'randomUser myApiKey', 'Content-Type': 'application/json', 'Content-Length': subscriber.length } } var hreq = http.request(options, function (hres) { console.log('STATUS CODE: ' […]

Socket.io不设置CORS头(s)

我知道这个问题已经被问了几次了。 但是,我无法得到任何这些解决scheme的工作。 我正在运行node.js和socket.io的标准安装。 (来自Amazon EC2上的yum) 问题在于Chrome正在回退到xhr轮询,并且这些请求需要一个可用的CORSconfiguration。 但是,我似乎无法得到它的工作。 我的Web服务器运行在端口80上,而node.js(socket.io)在端口81上运行。我试图让socket.io使用源策略,如你所见。 我也尝试使用“*:*”作为起源,没有运气。 这是我的代码: var http = require('http'); var io = require('socket.io').listen(81, {origins: '*'}); io.configure( function(){ io.set('origin', '*'); }); io.set("origins","*"); var server = http.createServer(function(req, res) { io.sockets.emit("message", "test"); res.writeHead(200); res.end('Hello Http'); console.log("Message recieved!"); }); server.listen(82); io.sockets.on('connection', function(client) { console.log("New Connection"); }); 非常感谢你!

如何从Node.js发出networking请求时指定networking接口?

在http.request或net.connect ,是否有一个选项可以指定一个networking接口来启动连接? 编辑:操作系统级别AFAIK我可以指定地址级别,或负载平衡到路由表。 但是在我的软件中select接口的方式不止这些,我想知道我是否可以在代码中做到这一点。

Node.js上的HTTP请求getaddrinfo ENOENT错误

以下是我的Node.js HTTP响应请求者的代码。 一旦我使用我明确知道不存在的网站,错误信息会通知我错误: getaddrinfo ENOENT 我想知道更多关于这个错误。 它产生了什么? 什么是错误的细节? 404会产生吗? var hostNames = ['www.pageefef.com']; for (i; i < hostNames.length; i++){ var options = { host: hostNames[i], path: '/' }; (function (i){ http.get(options, function(res) { var obj = {}; obj.url = hostNames[i]; obj.statusCode = res.statusCode; // obj.headers = res.headers; console.log(JSON.stringify(obj, null, 4)); }).on('error',function(e){ console.log("Error: " + hostNames[i] […]

Node.js HTTP获取URL长度限制

在Node.js中进行HTTP GET请求时的大小是否有限制? 如果是的话,我该如何改变呢? var url = "…" // very long, ~50'000 chars http.get(url, function (res) { res.pipe(fs.createWriteStream("file.txt")); }); 给我这个: <html><body><h1>400 Bad request</h1> Your browser sent an invalid request. </body></html> 在PowerShell或Bash中使用wget也是一样的。 $url = "…" wget -outf file.txt $url

Nodejs反向代理性能

我正在研究使用Node作为反向代理的可能性。 我的项目的主要目标之一是它是非常高的性能。 所以我已经设置了一个节点服务器来代理请求到目标节点服务器,无论请求会以“hello world”响应。 使用Apache Bench我已经对每秒处理的请求数做了一些比较。 代理,目标和调用者分别位于AWS的单独M1大型实例中。 我的结果令人沮丧和困惑。 直接从调用者到目标: ab -c 100 -n 10000 http://target-instance/ =〜2600个请求/秒 从调用者通过代理到目标 ab -c 100 -n 10000 http://proxy-instance/ =〜1100个请求/秒 使用lighttpd,我能够在代理和目标上获得约3500次/秒的请求 我对代理服务器性能不如目标服务器感到失望。 当比较像lighttpd这样的其他产品时,我已经看到代理实现了与目标相当的结果,所以我很困惑Node(应该快速减轻)何时达不到。 这里是我在Node v0.5.9中的代理代码:我错过了什么吗? var server = http.createServer(function(req, res){ var opts = { host: 'target-instance', port: 80, path: '/', method: 'GET'}; var proxyRequest = http.get(opts, function(response){ response.on('data', function(chunk){ res.write(chunk); }); […]