Node.js 节点响应JSON请求需要很长时间

Node.js 节点响应JSON请求需要很长时间,node.js,Node.js,我已经使用node.js实现了聊天应用程序。程序打开与客户端的连接,当EventEmitter发出“recv”事件时,它将响应新消息 问题是,当服务器持有大约3或4个以上的流时,响应其他请求需要很长时间。chrome developer工具将请求的状态显示为挂起。到达服务器(本地主机)需要5-30秒以上的时间。当node.js接收到新请求时,我使用console.log来记录 我不知道为什么会有很长的停顿。chrome浏览器、node.js或其他我应该知道的东西有什么限制吗?当节点同时持有太多请

我已经使用node.js实现了聊天应用程序。程序打开与客户端的连接,当EventEmitter发出“recv”事件时,它将响应新消息

问题是,当服务器持有大约3或4个以上的流时,响应其他请求需要很长时间。chrome developer工具将请求的状态显示为挂起。到达服务器(本地主机)需要5-30秒以上的时间。当node.js接收到新请求时,我使用console.log来记录


我不知道为什么会有很长的停顿。chrome浏览器、node.js或其他我应该知道的东西有什么限制吗?当节点同时持有太多请求时是否会延迟?我应该如何测量该值?谢谢

Chrome支持每个域同时连接六个连接,因此如果这些连接已经在使用中,它将不得不等待一个连接关闭。如果您想知道发生了什么,请使用数据包捕获程序来检查实际的网络流量。

浏览器被限制为适用于同一浏览器上下文的特定数量-例如,当您打开6个以上的选项卡时,连接将排队,您将看到它们处于挂起状态

例如,可以通过为每个客户端连接使用唯一的轮询子域来避免此限制。facebook就是这样绕过这个限制的,但是Firefox的问题是,这个解决方案不起作用,当你的连接达到这个限制时,即使你使用唯一的子域,你的连接也会排队


其他解决方案可能是使用HTML5本地存储,您可以利用它将更改也传播到同一浏览器中的其他选项卡。这就是StackOverflow聊天的方式。这种方法的优点是您只需要一个与服务器的轮询连接,但缺点是在较旧的浏览器中缺少HTML5本地存储支持,或者在FF版本<4中缺少不同的实现。

在您谈论的规模上没有人为的限制(3-4个连接?)--我听说过max文件描述符和导致瓶颈的东西,但它的负载要高得多。您可能需要发布一些代码。