【发布时间】:2014-02-04 04:29:31
【问题描述】:
当侦听端口 3000 的 Node.js Express 服务器收到请求时,它会路由到一个函数,该函数必须向另一个网站发出 POST 并在响应初始请求之前获得响应。
这可能吗?
这是我正在使用的代码:
app.get('/silence/:host', routes.silence);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
exports.silence = function(request, response){
var hostname = utils.validateHost(request);
if (stash.createSilencer(hostname)) {
response.writeHead(200, {"Content-Type": "application/json"});
response.write('{ "success" : true, "message" : "Successfully silenced host'" }');
response.end();
}
}
exports.createSilencer = function(hostname) {
var options = {
url: 'http://x.x.com:4567/create/silencer/' + hostname ,
method: 'POST',
body: '{ "timestamp": ' + utils.timestamp() + '} '
};
request(options, silencer_callback);
##### DONT WANT TO RETURN UNTIL THE silencer_callback IS INVOKED
return true;
}
function silencer_callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
console.log("Response Recieved");
}
}
【问题讨论】:
-
当然有可能,它就是这样工作的,你得到一个请求,创建一些数据,返回一个响应。我们可以帮助你吗,不,我们不能,因为你没有发布任何代码,这应该是微不足道的,至少你自己开始。
-
正如 adeneo 所说,是的,这是可能的。事实上,很难编写不以这种方式工作的代码,因为 node 中的几乎所有内容都依赖于回调和事件。如果您需要有关特定案例的帮助,请发布您的代码。
标签: node.js