Tag: 响应

node.js http服务器响应套接字写入事件?

有没有办法控制每个步骤的tcp套接字写入,以了解大型图像数据传输的服务器端进度? 最糟糕的是,如何修改主节点的bin文件夹来添加这个事件? 最后,有人可以向我解释为什么node.js http tcp套接字的最大长度是1460?

Nodejs为每个响应发送多个文件

我想发送多个文件给用户每个响应。 例如,用户请求索引站点,并且该站点需要一些.png,css等等。 用户只需要获得所需的一切。 那是这个想法。 所以我的想法是这样可以实现: res.writeHead(200, {'Content-Type': 'text/html'}); var content = fs.readFileSync(applicationPath + "index.html"); res.write(content); content = fs.readFileSync(applicationPath + "images/logo.png"); res.write(content); content = fs.readFileSync(applicationPath + "index.css"); res.write(content); res.end(); 这有可能以任何方式? 还是有其他解决scheme? 感谢您的帮助和解答!

在将文件传输到客户端之后,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); […]

ajax使用node.js进行实时search

我是node.js的新手 现在我试图写一个简单的网站,用户可以input一些东西给服务器来处理,并接收结果,比如search一些东西。 我试图执行它如下: 写index.html 编写server.js ,它创build一个服务器,并使用var index = fs.readFileSync('index.html'); response.end(index);显示索引页面var index = fs.readFileSync('index.html'); response.end(index); var index = fs.readFileSync('index.html'); response.end(index); 在index.html中添加ajax代码,接收用户input并发送给服务器 最后一步是在server.js中添加代码,处理请求并将结果发送给ajax进行显示。 我的问题是关于第4步。在server.js,当它收到一个Ajax请求,它应该以某种方式将结果添加到index.html文件,并使用response.end(index)发回,或者只发送结果? 如果后者,我试过了,它会发送index.html页面和结果。 但是我只想要结果。 下面是两个文件index.html和server.js : index.js <!DOCTYPE html> <html> <!– Client search using Ajax –> <head> <title>live search</title> <script> function getResults(query) { if (query.length===0) { document.getElementById("results").innerHTML=""; return; } if (window.XMLHttpRequest) { // code for […]

自定义响应消息,validation节点js中的所有必需参数

我是NodeJS和Express的新手,我想validationAPI参数。 现在我通过以下方式validation参数: if(!req.body.parametername) return res.send({"message": "Please provide parametername"}); if(!req.body.parametername) return res.send({"message": "parametername can not be blank"}); 但是我想让回复如下所示: { "username": [ "This field is required." ], "password": [ "This field can not be blank." ] } 这是我想要的,如果参数无效或没有提供的响应。

meteor模板没有使用点击事件进行更新

我试图做一个使用meteor会议(坚持视图的用户是)的反应式菜单..但它不工作,Session.get('currentView')得到改变(在Chrome控制台的teste),但页面不要再次渲染。 html的 <div class="col-1-1 menu" style="height: 42px;"> <ul> <li><a class="dashButton" href="#"># Dashboard</a></li> <li><a class="myJobsButton"href="#">Jobs</a></li> <li><a class="helpPageButton"href="#">Help</a></li> </ul> <br style="clear:left"/> </div> {{#if currentViewIs "dashboard"}} {{> dashboard}} {{else}} {{#if currentViewIs "myJobs"}} {{> myJobs}} {{else}} {{#if currentViewIs "helpPage"}} {{> helpPage}} {{else}} {{> dashboard}} {{/if}} {{/if}} {{/if}} client.js Template.userPage.currentViewIs = function (view) { if( Session.get('currentView') == view) return true; […]

我应该streamhtml文件,而不是只渲染?

我正在试验node.js / express.js,并认为pipe道html文件的请求,而不是只是渲染。 我希望能够获得更好的性能,并且html文件将会首次加载更快。 //instead of res.render('form',{title:'Login',userField:'Username',passField:'Password',photo: photo}); //I do var path = 'views/form.ejs'; var stream = fs.createReadStream(path); stream.pipe(res); This is actually about 10ms faster, even with a small file (385 bytes). I am developing so my files are still really 小。 我发现唯一的答案是,我不能在响应像userFieldembeddedEJS数据:'用户名' 1-我在这种情况下使用pipe道吗? 2-有没有其他的优点和缺点? 3-我是否过度使用它? 我应该只使用渲染,因为差异很小,或与缓慢连接 大的HTML,pipe道实际上节省了一天? 谢谢

Node.js混淆了每个循环的输出

我想知道如果有人能帮助我理解以下行为。 如果我在node.js服务器上有一个app.js文件,如下所示: var http = require('http'); var _ = require('underscore'); http.createServer(function(request, response) { var x = ''; _.each([1, 2, 3], function(num){ x +=" underscore.js says " + num; }); response.writeHead(200, { 'Content-Type': 'text/html' }) response.end(x); }).listen(3000, null); 然后,每当我请求页面,我看到文字“underscore.js说x”3次。 我期望这样做,因为循环中有3个数字,每个请求都会重置x。 但是,如果我有以下(x移到createServer的callback之外): var http = require('http'); var _ = require('underscore'); var x = ''; // Note x […]

Node.Js / Express – 简单的中间件来输出响应的前几个字符

对于日志logging/debugging,我想在发送给浏览器之前输出响应的前一百个字符。 有什么简单的我可以做中间件和响应对象来做到这一点? 理想情况是这样的: app.use(function(req, res, next) { console.log('Response snippet: '+((res.body || '').substr(0,100))); next(); }); 除了回应没有身体,我不能完全弄清楚现在的身体被送回的位置。 更新: 彼得的答案工作,我想我会把我的中间件代码在这里保存未来的观众点击: App.use(function(req, res, next) { var end = res.end; res.end = function(chunk, encoding){ res.end = end; if (chunk) { console.log(chunk); } res.end(chunk, encoding); }; next(); });

FFMPEG挂起整个nodejs进程

我想要做的是使用ffmpeg制作video的缩略图。 video数据通过HTTP请求接收,然后通过pipe道传输到ffmpeg。 问题是,一旦ffmpegsubprocess退出,我根本无法发送回应。 这里是代码: var http = require('http'), sys = require('sys'), child = require('child_process') http.createServer(function (req, res) { im = child.spawn('ffmpeg',['-i','-','-vcodec','mjpeg','-ss','00:00:03','-vframes','1','-s','100×80','./thumb/thumbnail.jpg']); im.on('exit', function (code, signal) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('{"success":true}\n'); }); req.connection.pipe(im.stdin); }).listen(5678, "127.0.0.1"); 问题是,调用: res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('{"success":true}\n'); 什么都不做,客户从来没有收到回应。