2011-07-05 2 views
1

HTML5의 공유 웹 작업자의 커다란 이점은 하나의 개별 실행 스레드에서 여러 연결을 수용 할 수 있다는 것입니다.HTML5 : 다중 연결을 사용하는 공유 된 웹 작업자

내 질문은 : SharedWorker를 여러 사람이 연결하여 Google 크롬으로 단일 스레드로 작동하도록합니까? 최신 버전 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에 대한 각 연결이 별도의 스레드에서 실행되고 있다고 생각하게합니다.

내가 잘못 했나요? 아니면 SharedWorker에 대한 Chrome 지원이 아직 없습니까?

업데이트 : 데모가 작동합니다.

+0

단지 제안 .. 웹 노동자들은 새로운 기술이 ... 당신이 카나리아을 얻거나, 베타 채널에 있어야합니다. 귀하의 문제에 대해 잘 모릅니다 : (아마도 아직 안정에 이르지 못했을 것입니까?) – Achshar

+0

다음은 다중 연결이있는 공유 웹 작업자의 데모입니다. http://www.antkorp.in/sharedworkers/ –

답변

2

작업자에게는 청취자가 2 명 있지만 작업자는 한 번만 시작하므로 2 명의 소유자가 아닌 1 명의 소유자가 1 명의 작업자를 공유합니다. 청취자의 수를 늘리는 것은 소유권에 영향을 미치지 않습니다.

당신은 여기 예제를 볼 수 있습니다 http://weblog.bocoup.com/javascript-web-workers-chrome-5-supports-new-sharedworker

이 2 개 프레임, iframe이와 iframe이 내부 하나를 포함하는 하나입니다. 두 사람은 모두 start 작업자 메소드를 호출하여 두 명의 소유자가 공유합니다. start 메서드가 두 번 호출되므로 onconnect 이벤트를 두 번 실행해야하므로 connection.count이 2가됩니다.

+0

감사합니다. 모든 연결에 대한 새로운 SharedWorker 인스턴스 (예 : W3C의 예 : http://www.w3.org/TR/2009/WD-workers-20091029/#shared-workers와 일치하지 않음). 내 데모를 업데이트했습니다. , 작동합니다. –

0

공유 웹 작업자의 경우 마지막 브라우저 세션이 끝날 때까지 컨텍스트가 살아 있습니다. 공유 된 웹 작업자는 브라우저 탭 주위에서 컨텍스트를 유지 관리 할 수 ​​있습니다. 이들은 동일한 데이터 컨텍스트로 요청에 응답합니다.

데이터 컨텍스트의 변경은 모든 연결에 영향을 미칠 수 있습니다. 단일 컨텍스트 변경으로 모든 연결을 업데이트 할 수있는 가능성이 있습니다. 마지막 연결이 끝날 때까지 데이터를 유지 관리 할 수 ​​있습니다. 모든보기에서 연결 변경 사항을 유지 보수 할 수 있습니다.

다음은 여러 연결을 사용하는 공유 웹 작업자의 데모입니다.

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

+0

링크가 작동하지 않습니다. 업데이트 할 수 있습니까? – Wilt

관련 문제