我使用 Node 和 Restify 创建了一个 Microsoft Teams 通知机器人。该机器人已作为 Web 应用程序部署在 Azure 上。 发送通知的请求有时可能需要 1 到 4 分钟,当超过 3 分钟时,我会收到超时响应(即使 1 分钟后我仍然收到通知)。 我们正在努力优化,使其速度更快,但同时我需要一个修补程序并增加请求超时。我怎样才能用restify做到这一点?或者如何在 Azure 中作为 Web 应用程序执行此操作?
这是我迄今为止尝试过的:
const server = restify.createServer();
// Set request and connection timeouts
server.server.setTimeout(10 * 60 * 1000); // 10 minutes
server.server.timeout = 10 * 60 * 1000; // 10 minutes
server.server.keepAliveTimeout = 10 * 60 * 1000; // 10 minutes
但这没有用。在 Azure 中,我只是设置保持连接处于活动状态,因为我找不到任何方法来做到这一点(并且根本没有任何改变)。
请参阅文档使用 NodeJs 在您的应用程序中配置超时。
将超时设置为 5 分钟的代码片段:
const server = restify.createServer();
server.timeout = 300000;
server.use(restify.plugins.bodyParser());
server.listen(process.env.port || process.env.PORT || 3978, () => {
console.log(`\nApp Started, ${server.name} listening to ${server.url}`);
});
还要在
App Service=>Environment Variables
中添加应用程序设置:
我使用 Visual Studio 代码使用 NodeJs 和 Restify 创建了 Microsoft Teams 通知机器人。
[nodemon] starting `node --inspect=9239 ./src/index.js`
Debugger listening on ws://127.0.0.1:9239/51492a1f-1148-459d-85f6-4e60e92c14e1
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
(node:8204) [DEP0111] DeprecationWarning: Access to process.binding('http_parser') is deprecated.
(Use `node --trace-deprecation ...` to show where the warning was created)
App Started, restify listening to http://[::]:3978
Invoke-Webrequest -Method POST -URI https://localhost:3978/api/notification
导航到
Azure Bot=>Channels=>Microsoft Teams
,单击 在 Teams 中打开,重定向到上传到 Teams 客户端的通知机器人应用程序。
Invoke-Webrequest -Method POST -URI https://notification9c6356.azurewebsites.net/api/notification