我使用Node.js(v0.12.4)和Socket.io(1.3.2)在实时交易应用程序中工作。在那,当从Node.js向GUI(Socket.Io)发出响应时,我将面临几乎(100ms)的时间延迟。
我不清楚为什么从Node.js向GUI(Socket.IO)发送数据时存在时间延迟。
这发生在生产现场。我们也试图在生产服务器位置调试此问题,因为网络延迟。但结果相同。
请有人帮我这个吗?
答案 0 :(得分:5)
在执行以下操作之前需要注意一件事。 计算从后端(服务器端)到前端的时序时 (客户端)您需要在使用相同的计算机上运行它 定时晶体。
石英晶体驱动的时序即使在高质量的主板上也会受到影响 彼此。
如果您在计算从后端(服务器端)到前端(客户端)的延迟时间没有延迟 ,那么您最初发现的延迟是由网络连接或主板计时晶体中的 deference引起的。这将消除Node.js和Socket.io作为时间延迟的原因。
基本上,在解决问题之前,您需要找出延迟发生的位置。
您需要做的是找出导致项目中最大性能影响的原因。为此,您需要隔离每个流程所需的时间。您还需要测量从初始检索数据到发布数据的时间延迟。然后测量每个功能,方法和过程的时间延迟。尝试隔离问题。你需要问最多的时间吗?
为了找出您的演出来源,您需要执行以下操作。
以下是一些可用于衡量整个代码效果的工具。
首先: 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中呈现。
此警报消息阻止从节点到套接字的响应数据。
感谢您的帮助。