2016-02-02 140 views
6

我正在使用Node.js(v0.12.4)和Socket.io(1.3.2)實時交易應用程序。在這種情況下,當從Node.js發送到GUI(Socket.Io)的響應時,我面臨着幾乎100毫秒的時間延遲。Node.js到Socket.io時間延遲

我不知道爲什麼從Node.js向GUI(Socket.IO)發送數據時存在時間延遲。

發生在生產現場。而且我們也試圖在生產服務器位置進行調試,這也是因爲網絡延遲。但結果相同。

任何人都可以幫助我嗎?

+0

您使用哪種瀏覽器(假設客戶端是Web瀏覽器)。什麼是您的服務器配置?爲了調試,您已經嘗試過了什麼? –

+0

看看[socket.io調試](http://socket.io/docs/logging-and-debugging/#) –

+0

我們試過Chrome和Firefox。這兩個瀏覽器我們都面臨時間延遲。我們在從Node發出數據之前以及從GUI(socket.io)接收數據之後添加了時間戳。時差超過100毫秒 – MadTech

回答

5

在做以下事情之前要注意一件大事。 當計算從後端(服務器端)到前端 (客戶端)的時序時,您需要在使用相同 時序晶體的同一臺計算機上運行該時序。

即使在高質量的主板上,石英晶體驅動的定時也會相互影響。

如果您發現沒有延遲計算從後端(服務器端)到前端在同一臺PC那麼你最初發現的延遲是造成通過(客戶端)時間延遲時網絡連接尊重主板中的定時晶體。這將消除Node.js和Socket.io作爲時間延遲的原因。

基本上你需要找出延遲發生的位置,然後才能解決問題。

你需要做的是找出是什麼導致最大的性能達到在您的項目。爲了做到這一點,您需要隔離每個過程需要的時間。您還需要測量從初始檢索數據到釋放數據的時間延遲。然後測量每個功能,方法和過程的時間延遲。嘗試隔離問題。你需要問什麼花了最多時間去做?

爲了找出您的表現來自哪裏,您需要執行以下操作。

  1. 找出需要多長時間您的代碼得到的信息需要。
  2. 找出每個信息處理過程有多長需要它發送數據之前即功能/方法...
  3. 送出覺得需要多久才能得到的信息給客戶端的信息後邊和負載。
  4. 添加所有時間並確保它等於您的性能延遲,以確保您擁有隔離性能泄漏所需的所有數據。
  5. 通過其耗時最耗時的耗時最少的時間延遲來訂購每種方法,功能,過程...。當你發現哪些進程造成最大的延誤,那麼你就能夠解決問題......或者至少探索切實可行的解決方案...

這裏有一些工具可以用來在整個測量性能你的代碼。

第一: Chrome有一個非常好的工具,可以讓你看到每個執行代碼的性能。

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

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

四:您可以使用之類的東西console.time()

0

我發現在那裏發生的那個時間延遲。一旦我將客戶端套接字發送到節點,我將顯示一些警報消息(「數據處理」)。警報消息花費時間在GUI中呈現。

此警報消息阻止從節點到套接字的響應數據。

感謝您的幫助夥計們。