【发布时间】:2014-04-25 00:14:08
【问题描述】:
我对 NodeJs 中的套接字超时有疑问。
我第一次添加以下代码:
req.socket.once('timeout', function(err) {
imports.logger.warn('Express socket timeout.', err);
res.status(504).end('Connection timeout');
});
而且我经常在页面加载后很长时间在控制台中记录 Express Socket 超时错误。 所以(为了调试)我尝试添加这一行:
req.socket.setTimeout(4000);
最后我看到我的所有请求都在 4 秒后处理了 Express 套接字超时。 我在网上搜索了很多资料,但还是不明白。
我不明白为什么关闭请求的 res.json() 函数也不会关闭套接字。是否有与 keep-alive 的链接?带有网络套接字的链接?
如果它是网络套接字的链接,最好的做法是什么?我应该关闭套接字和(如果是的话)到底在哪里?
如果有需要可以看我的简单快递路线代码:
app.get(apiUrl + '/:id', function (req, res) {
NewsFeed.findById(req.params.id, function (err, newsFeed) {
if (err) {
return app.error(res, 404, 'Error 404: No news found');
}
res.json(formatNewsFeed(newsFeed));
});
});
【问题讨论】:
标签: node.js http express websocket