![](/img/trans.png)
[英]How do I configure nodejs/expressjs to serve pages over https?
[英]Nodejs, expressjs - how to serve delayed response
我正在构建一个网络服务,为此我使用了 nodejs、phantomjs 和 expressjs。 我正在学习所有三个。
我想在处理他们的查询后为客户提供延迟响应。 例如,
我正在处理来自我的客户的某些输入,然后,我想在后端处理数据,平均需要大约 10 秒。 然后我想将此页面提供给客户。
是否可以在节点中对同一请求或延迟响应发送多个响应,以便模板自动更新内容。
或者,我应该使用相同的方法,例如将 json 存储在服务器中的文件中,然后使用 ajax 提供页面以查询页面。
请帮我。 这是我写的代码,
app-server.js(主文件):
// import express module
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
// define all required template files to be served and also define the template engine
app.engine('.html', require('ejs').__express);
app.set('views', __dirname + '/views');
app.set('view engine', 'html');
// Useful modules
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// import the routes
require('./router')(app);
app.listen(8080);
路由器.js:
var crypto = require('crypto');
var express = require('express');
module.exports = function (app) {
// define the static routes.
app.use('/static', express.static('./static'));
app.use('/media', express.static('./media'));
//defining the controller.
var parserlib = require('./controller.js')
// Define the home root path
app.get('/', function (req, res) {
// shows the home search page.
res.render('index', {content:'template success'});
});
app.get('/search', function(req, res){
res.redirect('/');
});
app.post('/search', parserlib.parserlib);
}
控制器.js:
var crypto = require('crypto');
var path = require('path')
var childProcess = require('child_process')
exports.parserlib= function(req, res){
var output = '';
var url = req.body.search_url;
var childArgs = [
path.join(__dirname, 'external-script.js'),
url,
]
// execute the script in a separate thread.
childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) {
// handle results
console.log(stdout);
output = stdout;
//console.log(err);
//res.send(output);
});
//res.send(output);
};
所以,我想看到的是,首先向客户端发送一个响应,说明它正在加载,然后我想用处理过的数据更新它。 在其他语言中,无法发送多个响应。 不确定nodejs。
另外,我是否必须将处理后的 lib 的 json 输出存储到文件中,然后使用 ajax 进行查询? 或者是否可以直接将 json 对象更新到客户端?
谢谢
这不是 HTTP 的工作方式。 客户不会期望它。 这与 Node 或任何其他框架无关。 做你正在尝试的方法是实际发送一个正在加载的响应,然后有一些其他的报告状态的机制。
例如,您可以设计一个 RESTful API。 在该 RESTful API 中,您可以定义用于创建新事物的端点:
POST /api/东西
客户端将向其发布数据以创建新事物。 响应应该是提供新创建资源位置的内容,例如 HTTP 301 到/api/things/1
。
如果用户转到/api/things/1
并且事情还没有完成,那么你可以做一个临时重定向(303)到/api/things/1/status
提供一些有用的状态信息,或者只需发出 404。
如果您真的想发回服务器端的状态信息推送,那么您应该查看 WebSockets 或某种纯 Socket API,这两种 API 都不是 Express 提供的,但两者都可以在 Node 中使用(请查看socket.io
库和net
核心库)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.