我使用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);
}
我在测试代码中多次这样做。
感谢您的帮助!
答案 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