2015-09-05 58 views
5

我的網站使用網絡套接字連接到實時數據流。數據流只是一系列JSON消息。在websocket處理程序中,當我收到消息時,我解析JSON並將一些數據點添加到圖形中。在WebWorker上放置WebSocket是否有意義?

我的問題是:它是有意義的WebSocket的移動到它自己的工作線程?

起初,我想我可以解析JSON在自己的線程和發送UI線程的反序列化對象可能節省一些時間。不幸的是,它看起來像postMessage需要我發送字符串。因此,在自己的線程上解析JSON沒有任何好處。

它也似乎並不像有會在收到關於自己的話題網頁套接字數據任何好處 - 我成像瀏覽器已經接受在自己的線程斷絲的數據,並提供我的javascript在適當的時候回調。

因此,鑑於沒有對實時數據正在做的任何後期處理接收 - 它主要是直UI - 它是有意義的把一個網絡工作者一個WebSocket連接?

謝謝! 安德魯

+1

恕我直言,這隻會意義,如果你發送一些壓縮結果返回到主線程之前做的JSON消息顯著(CPU重)處理。 – Alnitak

+1

這個問題過於寬泛,因爲它確實發生在您對數據做了多少處理。讓一個工人增加更多的開銷,但是如果你正在進行一些壓縮或其他工作,那麼在工作人員中做這件事很好。 –

回答

2

,當我需要避免在敏感時期的瀏覽器線程中斷(使用網絡音頻API被送入來自我定製的NodeJS服務器渲染音頻流時),我需要把WebSocket的處理成一個網絡工作者的實例了。每當瀏覽器端websocket收到音頻數據消息時,它都會中斷瀏覽器處理,如果您的應用程序沒有這種擴展的敏感時間段,這很好。通過將websocket管理放入webworker中,我避免了中斷Web Audio API事件循環。 webworker將處理websocket傳入的數據,並將其放入webworker側的循環隊列中。瀏覽器端的Web Audio API事件循環會在其自己的事件循環停止時間部分訪問此WebWorker管理的隊列,從而避免任何事件循環中斷。

請參見相應的回購https://github.com/scottstensland/websockets-streaming-audio

相關問題