Tag: http

使用Node.js http.get时,套接字不会显示为closures状态

OS X 10.8.3 节点0.10.0 我正在使用“http”模块来提出FacebookgraphicsAPI的请求。 以下是我传递给“http.get”的选项: var options = {host: 'graph.facebook.com', port: 80, path: '/' + fb_id + '/picture'}; //fb_id is a Facebook user identifier 我的代码如下所示: http.get(options, function(res) { …some stuff… DONE(RESULT); //DONE is a callback function }).on('error', function(e) { …some error handling… }); 我所观察到的是,我只能做和http.globalAgent.maxSockets一样多的请求。 一旦我达到了这么多的请求,下一个调用http.get永远(显然)连接。 我已经validation,我没有收到错误的请求。 就好像响应进入后套接字没有closures。 有什么我需要做的响应处理程序,以确保套接字的一部分? 这些套接字是否因为默认的keepalive行为而closures? 我应该如何进行debugging呢?

使用Res.Render Nodejs Express返回错误代码

我用express来使用nodejs。 我想返回一个自定义的404找不到错误页面。 我有它的工作。 但是我还没有find如何返回与res.render()错误代码的解决scheme。 我看到了一些类似的问题,但他们是旧的,并使用不推荐的方法。 任何帮助将不胜感激。

Heroku Node.js node-http-proxy模块没有这样的应用程序错误

我试图将stream量从我的testing应用程序的/ api / * urlredirect到Heroku托pipe的我的api。 因此,应将localhost / api / hello代理到testapp.heroku.com/hello,并返回响应。 使用node-http-proxy在localhost到localhost上完美工作,但是当我将它指向myapp.heroku.com时,我得到这个错误: Heroku | No such app There is no app configured at that hostname. Perhaps the app owner has renamed it, or you mistyped the URL. 我感觉Heroku的路由系统正在欺骗我的代理请求,而且我还没有find解决这个问题的方法。 有任何想法吗?

在获取大量图像下载的同时在Node.js http.get中包含超时

这是我一直用来从url下载图片的代码: http.get(options, function (res) { res.on('data', function (data) { file.write(data); }).on('end', function () { file.end(); console.log(file_name + ' downloaded '); cb(null, file.path); }).on('error', function (err) { console.log("Got error: " + err.message); cb(err, null); }); }); 如何为每个请求添加一个超时,以便它不会一直等待大数据或无响应的响应?

WebSocket服务器不支持SSL

我有一个使用websockets的工作聊天应用程序。 我想更进一步,并在我的连接上启用encryption,但是当我使用https连接到http服务器时,我的连接开始失败。 我在我的所有网站(在同一顶级域名(TLD)下提供了自签名证书,这意味着它是通配证书)。 我可以确认这是一个有效的证书,所以问题不应该在那里。 这是什么工作(未encryption) var webSocketServer = require('websocket').server; var http = require('http'); var server = http.createServer(function() {}); server.listen(webSocketsServerPort, function () { log("system", "Server is listening on port " + webSocketsServerPort); }); var wsServer = new webSocketServer({ httpServer: server }); 现在我可以连接到ws://my.domain:port 。 这是不行的 var webSocketServer = require('websocket').server; var http = require('https'); var fs = require('fs'); […]

如何使用NodeJS创buildstream媒体API

你将如何去创build一个stream媒体API的节点 ? 就像TwitterstreamAPI一样 。 我最终想做的是从FriendFeed api获得第一个更新,当新的可用(如果id不同),然后将其公开为Web服务,所以我可以在我的WebSockets上使用它网站:)。 到目前为止,我有这样的: var sys = require('sys'), http = require('http'); var ff = http.createClient(80, 'friendfeed-api.com'); var request = ff.request('GET', '/v2/feed/igorgue?num=1', {'host': 'friendfeed-api.com'}); request.addListener('response', function (response) { response.setEncoding('utf8'); // this is *very* important! response.addListener('data', function (chunk) { var data = JSON.parse(chunk); sys.puts(data.entries[0].body); }); }); request.end(); 哪个只从FriendFeed获取数据,创build带有节点的Http服务器很容易,但不能返回一个stream(或者我还没有find如何)。

如何捕捉不存在的主机上的node.js http错误?

当我试图使用http模块访问不存在的主机,如下所示: requestToRemote = http.createClient(80, 'fjasdfhasdkfj.vvvxcz').request( method, path, headers ); 但是我得到以下错误: node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: getaddrinfo ENOENT at errnoException (dns.js:31:11) at Object.onanswer [as oncomplete] (dns.js:140:16) 我想赶上这个错误,所以我试过try / catch和设置一堆请求属性的错误侦听器,但没有任何工作。 我怎样才能捕捉到错误?

如何使用node.js和Request包禁用HTTP头中的“withcredentials”?

从浏览器(通过browserify )使用node.js和Request包,我使用CORS在单独的域上执行HTTP GET请求。 在服务器上,当我将'Access-Control-Allow-Origin'设置为通配符'*' ,客户端上出现以下错误: XMLHttpRequest无法加载….当凭证标志为真时,通配符“*”不能在“Access-Control-Allow-Origin”标头中使用。 原因'…'因此不被允许访问。 HTTP请求标题如下所示: Accept:*/* Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8,ja;q=0.6 Access-Control-Request-Headers:withcredentials Access-Control-Request-Method:GET Cache-Control:no-cache Connection:keep-alive Host:localhost:3000 Origin:http://localhost:9966 Pragma:no-cache Referer:http://localhost:9966/ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 所以清楚的问题是Access-Control-Request-Headers:withcredentials在头文件中Access-Control-Request-Headers:withcredentials ,对不对? 为了能够删除这个,我需要将'XMLHttpRequest'对象的'withcredentials'属性设置为'false'。 然而,我无法弄清楚node.js或Request包在创build“XMLHttpRequest”对象,我甚至可以访问它。 谢谢。

讨论:通过node.js聊天服务器:HTTP还是TCP?

我正在考虑使用node.js / socket.io做一个聊天服务器。 我应该使它成为一个TCP服务器或HTTP服务器? 我想tcp服务器会更有效率,但你可以发送其他东西,如文件附件等? 如果tcp更高效,还有多less呢? 另外,只是想知道一个node.js服务器可以处理多less个并发连接? 是更多的工作做TCP或HTTP?

通过PHP或Apache从服务器端上传HTTP文件

在将大文件(> 100M)上传到服务器时,PHP总是首先从浏览器接受全部数据POST。 我们无法注入上传过程。 例如,在我的PHP代码中,在将整个数据发送到服务器之前检查“ token ”的值是不可能的 : <form enctype="multipart/form-data" action="upload.php?token=XXXXXX" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="3000000" /> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form> 所以我尝试使用这个mod_rewrite : RewriteEngine On RewriteMap mymap prg:/tmp/map.php RewriteCond %{QUERY_STRING} ^token=(.*)$ [NC] RewriteRule ^/upload/fake.php$ ${mymap:%1} [L] map.php #!/usr/bin/php <?php define("REAL_TARGET", "/upload/real.php\n"); define("FORBIDDEN", "/upload/forbidden.html\n"); $handle = fopen ("php://stdin","r"); […]