2009-06-15 30 views
2

我正在構建一個多線程的客戶端JavaScript應用程序,我想有一個後臺線程拉二進制數據並將其傳遞給主線程。我知道這可以通過序列化在其他語言中完成,但是如何在javascript中完成此操作?你如何將二進制消息傳遞給javascript web worker?


我可能把這個應用到一個獨立的XULrunner申請下來以進一步提高效率的路線,所以我寧願去HTML5的「網絡工作者」路線與使用Gears。

回答

4

Web Workers postMessage API需要一個JavaScript對象。 Mozilla的Using web workers單證說:

可以安全地進出使用的postMessage()方法 工人 對象;對象在內部自動轉換爲JSON 。

因此,您可以使用任何支持或可以轉換爲二進制數據的JavaScript對象。根據其他因素,可能會轉換爲Base64字符串(請參閱How can you encode to Base64 using Javascript?)或在數字上使用數組。

+2

感謝您的答案!我會給這個答案投票,但是,沒有聲望這樣做呢。 我的印象是,只有字符串被允許,因爲它被記錄爲「消息」,但從你的解釋,似乎它可以處理更多。另外,感謝您的鏈接。 – 2009-06-17 15:48:15

0

您是否願意使用Google Gears?這正是他們的WorkerPool線程實現的用途。

1

您使用postMessage作爲在這裏另有說明,但是,對象/數據必須使用atob()傳遞之前使用base64編碼()