「NodeJS,全栈全端」http server最大保持连接数

node.js http server 框架用的Express 4.X ,服务主要用来提供http接口,但是其中有提供H5的EventSource服务,会阻塞请求,问题是现在在服务接收一些长连接的请求后(不响应res.end,一直用res.write推送数据),后面的请求就无法接收不到了(普通的http接口请求也是),当我关闭一个长连接请求后,其他请求就可以过来了,请问这是http server的限制,还是系统的限制,或者是代码的Bug?请大神不吝赐教,下面上主要部分代码:
//路由
router.get('/events/xlc-users-log', function (req, res) {
//接收数据
function eventLog(data) {
var result = data;
res.write("event:xlc-users-log\n");
res.write("data: " + JSON.stringify(result ) + "\n\n");
}
//保持客户端连接
heartbeat(req, res, 'xlc-users-log', eventLog);
//服务端收到数据,推送数据到客户端
global.event.on('xlc-users-log', eventLog);
});
//保持心跳,直到客户端主动断开
function heartbeat(req, res, eventName, callback) {
res.writeHead(200, {
"Connection": "keep-alive",
"Content-Type": "text/event-stream",
"Cache-Control": "no-cache"
});
res.write(":ok\n\n");
var idleTimeout = setInterval(function () {
res.write("\n\n");
}, 30000);
req.on("close", function () {
global.logger.info('close disconnet');
if (eventName && callback) {
global.event.removeListener(eventName, callback);
res.end();
}
clearInterval(idleTimeout);
});
req.on("aborted", function () {
global.logger.info('aborted disconnet');
if (eventName && callback) {
global.event.removeListener(eventName, callback);
res.end();
}
clearInterval(idleTimeout);
});
}

回答
0
最佳
Waroom ,只能打杂,别的不会
我来回答
无用回答
问题修改记录
暂无修改记录
广告位 点击查看投放指南

我的收藏