この不完全なスニペットを検討します。
var util = require('util'),
nconf = require('nconf'),
http = require('http'),
httpProxy = require('http-proxy'),
express = require('express'),
repoServer = express.createServer(),
redis = require('redis'),
redisClient = redis.createClient();
// (...)
var proxy = new httpProxy.RoutingProxy();
http.createServer(function (req, res) {
console.log("URL", req.url);
if (req.url) {
var token = req.url.split("/")[1];
// if I leave this code here it works fine
// var target = { host: 'local-01', port: 8024 }
// proxy.proxyRequest(req, res, target);
// now I need to retrieve some routing information
// from redis, so I query redis here
redisClient.get(token, function (err, reply) {
// if I leave this code here the request hangs
var target = { host: 'local-01', port: 8024 }
proxy.proxyRequest(req, res, target);
});
}
}).listen(routerInfo.port, routerInfo.address);
proxyRequest
外部のderedisクライアントコールバックを呼び出すget
と機能するのに、コールバック内にコールを移動すると失敗し、HTTPリクエストがハングするのはなぜですか?