2009-06-15 2 views
2

저는 멀티 스레드 클라이언트 측 자바 스크립트 애플리케이션을 만들고 있는데, 백그라운드 스레드가 바이너리 데이터를 가져 와서 메인 스레드에 전달하고 싶습니다. 이 직렬화를 통해 다른 언어로 할 수있는 알지만, 어떻게 자바 스크립트에서 이것을 수행합니까?어떻게 자바 스크립트 웹 작업자와 바이너리 메시지를주고 받습니까?


내가 더 효율성을 위해 선을 독립형 XULRunner가 응용 프로그램으로이 응용 프로그램을 설정 수도, 그래서 오히려 기어를 사용하여 대 HTML5 "웹 노동자"길을 가고 싶어.

답변

4

Web Workers postMessage API는 JavaScript 객체를 사용합니다. 모질라 Using web workers 문서화는 말한다 :

당신은 안전에와 PostMessage를() 방법을 사용하여 근로자의 밖으로 개체를 전달할 수 있습니다; 객체는 자동으로 이 내부적으로 JSON으로 변환됩니다.

따라서 바이너리 데이터를 지원하거나 바이너리 데이터로 변환 할 수있는 JavaScript 객체를 사용할 수 있습니다. 다른 요인에 따라 Base64 문자열 (How can you encode to Base64 using Javascript? 참조)로 변환하거나 숫자에 배열을 사용하십시오.

+2

감사를 사용하여 전달되기 전에 인코딩해야합니다! 나는이 답변을 투표 하겠지만 아직 그렇게 할 명성을 얻지 못했습니다. "메시징"으로 문서화되었으므로 문자열 만 허용된다는 인상하에 있었지만 사용자의 설명을 보면 더 많은 것을 처리 할 수있는 것 같습니다. 또한 링크에 감사드립니다. –

+2

사실,이 주제에 대해 더 많은 연구를했는데 Firefox가 3.6 이상에서 작동하는 것으로 보이는 JSON 인코딩이 나타납니다. 파이어 폭스의 3.5 버전에서조차. 나는 window.atob()을 사용하는 다른 접근 방법을 생각해 왔지만 DOM에 액세스 할 수 없으므로이 방법은 웹 작업자 자신이 사용할 수 없습니다. 내 응용 프로그램을 3.6 이상의 Firefox에서 빌드 할 수는 있지만 3.5가 오늘 밖에 나오지 않아 많은 도움이되지 않습니다. –

0

Google Gears를 사용 하시겠습니까? 이것은 정확히 WorkerPool 스레딩 구현을위한 것입니다.

1

그렇지 않으면 여기에 표시 한대로이 PostMessage를를 사용하지만, 오브젝트/데이터베이스 64은 atoB를() 답에 대한

관련 문제