node.js服务器限制新连接

时间:2015-06-30 18:03:38

标签: javascript java node.js tcp apache-httpclient-4.x

我使用node.js创建一个服务器,用于将服务器发送的事件发送到客户端。我在Windows 7计算机上运行服务器。

我连接的方式是通过apache httpclient发送HTTP get请求,建立TCP连接并从服务器接收事件。我注意到,在我同时连接11个客户端后,先前的连接关闭。

Node.js有限制吗?或者这是系统特定的?我一直在谷歌上搜索,我找不到任何东西。

以下是我发送的请求中的示例代码:

HttpClient httpClient = HttpClientBuilder.create().build(); 

String domain =    "..."; 

HttpUriRequest httpGet = new HttpGet(domain); String encoding = "..."

httpGet.setHeader(new BasicHeader("Authorization", "Basic " + encoding)); 
httpGet.setHeader(new BasicHeader("Content-Type", "text/event-stream")); 

HttpResponse resp = httpClient.execute(httpGet); 
HttpEntity entity = resp.getEntity(); 

if (resp.getStatusLine().getStatusCode() != 200){ String 
   responseString = EntityUtils.toString(entity, "UTF-8"); 
   System.out.println(responseString); 
}

我在测试代码中多次这样做。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

看看这个属性,看看它是否对你有帮助:

https://nodejs.org/api/http.html#http_agent_maxsockets

根据您使用的Node.js的版本,可能会限制打开的连接数量。尝试提高它:

http.globalAgent.maxSockets = 128; // or whatever suits your app

答案 1 :(得分:1)

由于节点js v0.12 http.globalAgent.maxSockets已设置为Infinity,因此它是客户端问题。

这应该设置客户端的限制:

http.globalAgent.maxSockets = 1000;

另一种选择是将Agent对象传递给http请求。看看另一个问题:How to set maximum http client connections in Node.js