Node.js到Socket.io时间延迟

时间:2016-02-02 10:44:49

标签: javascript node.js websocket socket.io

我使用Node.js(v0.12.4)和Socket.io(1.3.2)在实时交易应用程序中工作。在那,当从Node.js向GUI(Socket.Io)发出响应时,我将面临几乎(100ms)的时间延迟。

我不清楚为什么从Node.js向GUI(Socket.IO)发送数据时存在时间延迟。

这发生在生产现场。我们也试图在生产服务器位置调试此问题,因为网络延迟。但结果相同。

请有人帮我这个吗?

2 个答案:

答案 0 :(得分:5)

  

在执行以下操作之前需要注意一件事。   计算从后端(服务器端)到前端的时序时   (客户端)您需要在使用相同的计算机上运行它   定时晶体。

     

石英晶体驱动的时序即使在高质量的主板上也会受到影响   彼此。

如果您在计算从后端(服务器端)到前端(客户端)的延迟时间没有延迟 ,那么您最初发现的延迟是由网络连接或主板计时晶体中的 deference引起的。这将消除Node.js和Socket.io作为时间延迟的原因。

基本上,在解决问题之前,您需要找出延迟发生的位置。

您需要做的是找出导致项目中最大性能影响的原因。为此,您需要隔离每个流程所需的时间。您还需要测量从初始检索数据到发布数据的时间延迟。然后测量每个功能,方法和过程的时间延迟。尝试隔离问题。你需要问最多的时间吗?

为了找出您的演出来源,您需要执行以下操作。

  1. 找出代码获取所需信息所需的多长时间
  2. 找出多长时间每个信息处理过程在发送数据即函数/方法之前需要多长时间
  3. 发送信息后,查找将信息提供给客户端并加载所需的时间。
  4. 添加所有时间并确保其等于您的性能延迟,以确保您拥有隔离性能泄漏所需的所有数据。
  5. 订购每个方法,功能,流程......按时间延迟最耗时,耗时最少。当您发现哪些流程导致最大延迟时,您将能够解决问题...或者至少探索有形的解决方案......
  6. 以下是一些可用于衡量整个代码效果的工具。

    首先: Chrome有一个非常好的工具,可以让您查看每个执行代码的性能。

    第二名: performance-now node package. You can use it for dev performance testing.

    第三: Stack overflow post on measuring time/performance in js.

    第四:你可以使用console.time()

    之类的东西

答案 1 :(得分:0)

我发现时间延迟发生的地方。

有一次,我将数据从Client Socket发送到Node,我将显示一些警告消息(“Data Processed”)。警报消息需要花时间在GUI中呈现。

此警报消息阻止从节点到套接字的响应数据。

感谢您的帮助。