2011-07-05 31 views
1

從我所瞭解的情況來看,HTML5的共享網絡工作者的最大好處是他們可以在一個單獨的執行線程中接受多個連接。HTML5:具有多個連接的共享網絡工作者

我的問題是:是否有人獲得與SharedWorker的多個連接以與Google Chrome單線程一起工作?我正在使用最新版本12.0.742.112。

演示:http://demos.zulius.com/html5/sharedworker

源(如果演示是下降):index.htmlsharedworker.js

演示建立2個獨立的事件偵聽器。預期的輸出是:

foo got message: Hello World! You are connection #1 
bar got message: Hello World! You are connection #2 

在演示中,無論是事件偵聽器正確觸發,但連接數變量沒有在SharedWorker腳本維護。這使我相信到SharedWorker的每個連接都在一個單獨的線程中執行。

我做錯了什麼?或者Chrome不支持SharedWorker嗎?

更新:演示現在工作。

+0

只是一個建議..網絡工作者是一種新技術..你應該是金絲雀或至少測試版。不知道你的問題:(也許它還沒有達到穩定呢? – Achshar

+0

這是一個共享Web工作者與多個連接演示http://www.antkorp.in/sharedworkers/ –

回答

2

你有2個監聽者給工作人員,但你只啓動一次工人,所以它是1個工作人員由1個所有者共享,而不是2個所有者。增加聽衆的數量不會影響所有權。

您可以在這裏看到的例子: http://weblog.bocoup.com/javascript-web-workers-chrome-5-supports-new-sharedworker

它有2幀,一個包含iframe和一個iframe內。他們都稱工人的start方法,所以它由2個所有者共享。由於start方法被調用了兩次,onconnect事件應該被解僱的兩倍,從而使connection.count等於2.

+0

謝謝。看來有必要創建一個新的SharedWorker實例爲每個連接(儘管這不符合W3C的例子:http://www.w3.org/TR/2009/WD-workers-20091029/#shared-workers)。我已經更新了我的演示,它的工作原理 –

0

在共享webworkers上下文是活到最後的瀏覽器會話結束。共享的webworkers可以維護瀏覽器選項卡上下文。他們用相同的數據背景來回應請求。

數據上下文的變化將影響所有連接,可能性是您可以更新所有單個上下文更改的連接,您可以將數據保留到最後一次連接結束。您可以在所有視圖中維護連接更改。

這是一個演示共享網絡工作者與多個連接。

http://www.antkorp.in/sharedworkers/

+0

你的鏈接已經死了,你能更新嗎? – Wilt