Не могу найти документацию о том, как установить пользовательское время ожидания для данного запроса в NodeJS (с Express)?
Следующее не работает ....:
https.get("https://externalurl.com", { timeout: 1000 }, (res) => {
resp.on("timeout", () => {
console.log("Never fired");
});
});
Это тоже не работает:
https.get("https://externalurl.com", (req, res) => {
req.setTimeout(1000);
});
Это тоже не работает ...
https.get("https://externalurl.com", (res) => {
})
.setTimeout(1000);
Всегда ждет более 1 се c, прежде чем выдать ошибку
Может кто-нибудь помочь? Есть ли "официальный" способ установить пользовательское время ожидания для данного запроса?
Мой полный server.ts
// Express server
const app = express();
const PORT = process.env.PORT || 80;
const DIST_FOLDER = join(process.cwd(), "dist/browser");
// * NOTE :: leave this as require() since this file is built Dynamically from webpack
const {
AppServerModuleNgFactory,
LAZY_MODULE_MAP,
ngExpressEngine,
provideModuleMap
} = require("./dist/server/main");
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
app.engine(
"html",
ngExpressEngine({
bootstrap: AppServerModuleNgFactory,
providers: [provideModuleMap(LAZY_MODULE_MAP)]
})
);
app.set("view engine", "html");
app.set("views", DIST_FOLDER);
// Example Express Rest API endpoints
// app.get('/api/**', (req, res) => { });
// Serve static files from /browser
app.get(
"*.*",
express.static(DIST_FOLDER, {
maxAge: "1y"
})
);
// All regular routes use the Universal engine
app.get("/", (req, res) => {
res.render("index", { req });
});
app.get("/myCustomRoute", (req, res) => {
const protocol: string = req.query.myUrl.split(":")[0];
let httpProtocol;
if (protocol === "http") {
httpProtocol = require("http");
} else if (protocol === "https") {
httpProtocol = require("https");
}
try {
// THIS IS THE REQUEST I WANT TO CUSTOMIZE THE TIMEOUT
httpProtocol
.get(
`${req.query.myUrl}/custom/custom/custom/custom.php?param=${req.query.myParam}`,
{ rejectUnauthorized: false },
(myRes) => {
let data = "";
// A chunk of data has been received.
myRes.on("data", (chunk) => {
data += chunk;
});
// The whole response has been received
myRes.on("end", (resXml) => {
switch (myRes.statusCode) {
case 403:
res.status(403).send("Forbidden");
break;
case 404:
res.status(404).send("Not found");
break;
default:
res.send(data);
break;
}
});
}
)
.on("error", (err) => {
console.log(err);
res.status(500).send("custom error");
});
} catch (e) {
console.log(e);
res.status(500).send("custom error");
}
});
// Start up the Node server
app.listen(PORT, () => {
console.log(`Node Express server listening on http://localhost:${PORT}`);
});