Sebastian Bauer | Nero D&S GmbH


Web Workers
„Das Arbeitstier Browser“
Wer spricht?
• Sebastian Bauer
• Team Leader Intranet Services Team
• Webentwickler aus Leidenschaft
• „Web/Mobile addicted“

• @litervollmilch
• http://xing.com/profile/Sebastian_Bauer22
• http://www.itkrauts.com
Über die Nero D&S GmbH
•   Entwickler für Liquid Media Technologien
•   Tochter der Nero AG
•   1995 gegründet
•   Hauptsitz: Karlsbad, Deutschland
•   Regionale Niederlassungen:
•   Karlsbad, Deutschland
•   Glendale, Kalifornien, USA
•   Yokohama, Japan
•   Ca. 500 Mitarbeiter weltweit
•   Über 300 Millionen Installationen
•   Job gesucht?? ;-)
WEB WORKERS? WTF?
Ein Überblick über Web Workers
• W3C Working Draft
• HTML5
• JavaScript API für Arbeitsprozesse
  im Hintergrund
• Parallelisierung ohne UI Blocking
• Kein echtes Multi-Threading!
• Dedicated Workers / Shared Workers
UND WOFÜR SO?
Legen wir los!

WEB WORKERS IM EINSATZ
Einfaches Beispiel
• Simulierte, 5 Sekunden lange
  „Berechnung“
The Web Worker‘s Way - Dedicated Worker
Dedicated Worker – bsp1_worker.js
„Liebe ist die einzige Sache,
     die sich vermehrt,
    wenn man sie teilt.“
                     Autor unbekannt
Einen Schritt weiter..

SHARED WORKERS
Ein Worker, Sie alle zu
knechten..
• Ein Worker für mehrere Seiten
• Verbindung über „Ports“
• „Stirbt“ wenn alle Seiten geschlossen
• Posten von Nachrichten an alle
  „Ports“ möglich
Beispiel Shared Worker
Shared Worker –
bsp2_sharedworker.js
Shared Worker – bsp2_sharedworker.js
Was geht nicht?

EINSCHRÄNKUNGEN
Kein Zugriff auf den DOM!
• alert()
• document.getElementById()
•…
Kein Zugriff auf Elternseite!
• window Objekt
• Objekte aus globalem Scope
Geht’s noch?

WAS GEHT DENN ÜBERHAUPT?
Zugriff auf…
• navigator
• location (nur lesend!)
• XMLHttpRequest
• Object, Array, Date, Math, String
• setTimeout(), setInterval()
• importScripts() (innerhalb der gleichen
 Domain)

• ApplicationCache API
Übertragen von Daten via
postMessage()
• Strings
• Arrays
• JSON Objekte
•…
Und natürlich…




 „Spawnen“ weiterer Worker
Best Practices
• Worker spezialisieren!
• Keine riesigen Objekte hin- und
  herschieben!
• addEventListener() benutzen
• Keine „Trivialarbeiten“
WEITERE EINSATZGEBIETE /
INTERESSANTE DEMOS
Motion Tracking with Web
Workers




               http://bit.ly/ww_motio
„Simulated Annealing“




  http://bit.ly/ww_annealing
Außerdem interessant für..
• Spiele-Engines
• Desktop Anwendungen (AIR?)
• Berechnungen von Graphen (Canvas)
• …euer Projekt? Ideen?
Zu guter Letzt…

KOMPATIBILITÄT?
Web Workers – WTF?

WEB WORKERS FTW!
Bildernachweis
•   -nw- @flickr: http://www.flickr.com/photos/-nw-/4900267921/
•   Éole @flickr: http://www.flickr.com/photos/eole/73301169/
•   Saschaaa @ flickr: http://www.flickr.com/photos/saschaaa/152502539/
•   Stefan Baudy @flick: http://www.flickr.com/photos/-bast-/349497988/
•   RavenFire @flickr:
    http://www.flickr.com/photos/escapethematrix/525800552/
•   Ka Lodger @flickr: http://www.flickr.com/photos/kaeau/31336163/
•    Chris-Håvard Berge @flickr:
    http://www.flickr.com/photos/chberge/4113323306/
•   Tara Hunt @flickr:
    http://www.flickr.com/photos/missrogue/199208087/

Web Workers - Das Arbeitstier Browser