2011-07-05 4 views
1

D'après ce que je comprends, le grand avantage des travailleurs Web partagés de HTML5 est qu'ils peuvent accepter plusieurs connexions dans un seul thread d'exécution distinct.HTML5: travailleur Web partagé avec plusieurs connexions

Ma question est la suivante: est-ce que quelqu'un a eu plusieurs connexions avec SharedWorker pour travailler en tant que fil conducteur avec Google Chrome? J'utilise la dernière version 12.0.742.112.

Démo: http://demos.zulius.com/html5/sharedworker

Source (en cas démo est en baisse): index.html, sharedworker.js

La démo établit 2 écouteurs d'événements séparés. Le résultat attendu est:

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

Dans la démo, les deux écouteurs d'événements compter correctement le feu, mais la connexion variable n'est pas maintenue dans le script SharedWorker. Cela m'amène à croire que chaque connexion à SharedWorker s'exécute dans un thread séparé.

Est-ce que je fais quelque chose de mal? Ou le support de Chrome pour SharedWorker n'est-il pas tout à fait là?

MISE À JOUR: la démo fonctionne maintenant.

+0

juste une suggestion .. travailleurs web est une nouvelle technologie .. vous devriez être sur le canal canari ou atleast bêta. ne sais pas à propos de votre problème :(peut-être il n'a pas encore atteint stable? – Achshar

+0

Voici une démo de travailleurs Web partagés avec plusieurs connexions http://www.antkorp.in/sharedworkers/ –

Répondre

2

Vous avez 2 écouteurs sur le Worker mais vous ne démarrez le Worker qu'une seule fois, donc 1 Worker est partagé par 1 propriétaire au lieu de 2 propriétaires. Augmenter le nombre d'auditeurs n'affecte pas la propriété.

Vous pouvez voir l'exemple ici: http://weblog.bocoup.com/javascript-web-workers-chrome-5-supports-new-sharedworker

Il dispose de 2 cadres, l'un contenant l'iframe et l'un dans l'iframe. Ils appellent tous les deux la méthode start du Worker afin qu'elle soit partagée par 2 propriétaires. Puisque la méthode start est appelée deux fois, la prise de connection.count égale événement onconnect doit être tiré à deux reprises, ainsi 2.

+0

Merci, il semble qu'il est nécessaire de créer un nouvelle instance SharedWorker pour chaque connexion (même si cela ne coïncide pas avec l'exemple de W3C: http://www.w3.org/TR/2009/WD-workers-20091029/#shared-workers) J'ai mis à jour ma démo , ça marche –

0

Dans le contexte webworkers partagé est en vie jusqu'à la fin de la dernière session du navigateur. Les webmasters partagés peuvent maintenir le contexte autour des onglets du navigateur. Ils répondent aux demandes avec le même contexte de données. La modification du contexte de données affectera toutes les connexions, les possibilités sont que vous pouvez mettre à jour toutes les connexions avec un seul changement de contexte, vous pouvez maintenir les données jusqu'à la fin de la dernière connexion. vous pouvez gérer les changements de connexion dans toutes les vues.

Voici une démo de travailleurs Web partagés avec plusieurs connexions.

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

+0

Votre lien est mort, pouvez-vous le mettre à jour? – Wilt

Questions connexes