Web Worker met Ajax

Door Johan Dam, 12 jaar geleden, 5.900x bekeken

Een klein voorbeeld om dmv een Web Worker een pagina continue te laten updaten,

Dit kan gebruikt worden om continue het laatste nieuws weer te geven bv, of ervoor te zorgen dat altijd de laatste reacties worden weergegeven.

Dit is meer een voorbeeld dan een kant-en-klaar script.

(IE8 Ondersteund geen web workers, mogelijk dat het downloaden van de google chrome frame plugin ervoor zorgt dat dit wel werkt maar dat heb ik niet getest, IE gebruikers zullen maar gewoon F5 moeten drukken (er van uit gaande dat je de informatie vooraf al met PHP oid hebt geladen en de web worker alleen gebruikt om extra content toe te voegen)

Voorbeeld waarbij er continue de tijd word gevraagt:
http://www.johandam.com/html5_test/web_worker.html

(de seconden lijken raar te lopen, dit komt omdat er niet precies elke seconde een verzoek word gedaan)

Gesponsorde koppelingen

PHP script bestanden

  1. worker.js
  2. web_worker.html

 

Er zijn 15 reacties op 'Web worker met ajax'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Joren de Wit
Joren de Wit
12 jaar geleden
 
0 +1 -0 -1
Heb even code tags aan je scripts toegevoegd, nu zijn ze een stuk leesbaarder.

Is het verder misschien een idee om toch een werkend voorbeeldje te laten zien? Je zou simpelweg een PHP scriptje kunnen gebruiken dat de huidige tijd terug geeft, dan zou je elke seconde een update moeten zien...
Chris -
Chris -
12 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
var xmlhttp = new XMLHttpRequest();

Quote:
IE gebruikers zullen maar gewoon F5 moeten drukken


Misschien eerst verdiepen in AJAX-requests?
TJVB tvb
TJVB tvb
12 jaar geleden
 
0 +1 -0 -1
Wat is dit? En slechte versie van een basis Ajax script zoals die bij de meeste tutorials staan?
Sorry hoor, maar een opmerking als IE gebruikers zullen maar gewoon F5 moeten drukken is toch bullshit.
We negeren gewoon even het grootste gedeelte van de bezoekers?
Johan Dam
Johan Dam
12 jaar geleden
 
0 +1 -0 -1
http://www.w3schools.com/browsers/browsers_stats.asp
minder dan een derde van je bezoekers,

Dat ik zei dat IE gebruikers op F5 moesten drukken, kwam omdat ik ervan uit ging dat je met PHP al voor 'default' waarde ging zorgen, dit had ik erbij moeten zeggen.
Bij een F5 zou je dus de nieuwe content zien die direct door PHP geleverd werd.
En het is geen basis ajax script voorbeeld, het is een basis Web Worker voorbeeld.
Zal even een voorbeeldje in elkaar flansen en uploaden.

EDIT
Voorbeeld toegevoegd
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
Weegt het niet kunnen ondersteunen van oudere browsers (IE8 en ouder, verschillende telefoons) en het moeten laden van weer een extern script op tegen het niet-asynchroon hoeven gebruiken van XMLHttpRequest?

Leuk, maar niet een praktisch voorbeeld. Dit is niet hoe ik mensen Worker zou zien willen gebruiken. Ik had liever iets gezien waarbij je een Worker zou gebruiken omdat het uitrekenen veel tijd kost (als in, als je het in de main thread zou doen, zou de gebruiker het merken) Bijvoorbeeld localStorage doorzoeken o.i.d.
Johan Dam
Johan Dam
12 jaar geleden
 
0 +1 -0 -1
@jelmer, klopt. Web workers zijn veel meer geschikt om tijdrovende taken te verichten, ik had hier echter niet zo 1 2 3 een voorbeeld voor in gedachten en besloot iets simpels als voorbeeld te nemen.

Zolang je gebruik maakt van een fallback is het een toevoeging van een website.
Door eerst op de pagina zelf de content te verzorgen en een web worker te gebruiken om extra content toe te voegen, werkt alles nog prima voor mensen die IE gebruiken,
mensen met een andere moderne browser zal het nog beter werken.
P Lekensteyn
P Lekensteyn
12 jaar geleden
 
0 +1 -0 -1
Dit is een prima voorbeeld.
IE kan de pot op, je gaat mensen toch ook geen Windows 95 aanraden?
Web Workers kunnen zeer handig zijn, maar als je het gebruikt om bijvoorbeeld een blog te weergeven (waar bezoekers lezen en weer weg zijn) is het wat minder nuttig.
Web Workers hebben zeker een toekomst bij webapplicaties.
Aan jou de keus: gemak of ouderwets.
Pim -
Pim -
12 jaar geleden
 
0 +1 -0 -1
Heel veel mensen gebruiken IE, je moet wel.
Verder is het script nutteloos en slecht geschreven (gebruik intervallen!). En waar denk je dat de 1e A in Ajax voor staat...
P Lekensteyn
P Lekensteyn
12 jaar geleden
 
0 +1 -0 -1
Oke, AJAX mag je hieruit weglaten, maak er maar gerust HTTP request on background van.
Johan Dam
Johan Dam
12 jaar geleden
 
0 +1 -0 -1
Het klopt dat het Ajax gedeelte hierin nutteloos is. Een interval zou al helemaal nutteloos zijn, waarom zou je een web worker laten wachten?

De ajax zonder web worker met een interval aanroepen, kijk, dat is nuttig, maar dan heb je het over een ajax voorbeeld,
Michael Beers
Michael Beers
12 jaar geleden
 
0 +1 -0 -1
Uhmm hiervoor zijn er toch al frameworks die veel beter werken dan een eigen gemaakt scriptje... denk aan bijvoorbeeld Jquery en Mootools slechts 14kb laadtijd en werkt op meerdere browsers
Kris Peeters
Kris Peeters
10 jaar geleden
 
0 +1 -0 -1
Wel ja ...

Wat een web worker doet, is code asynchroon uitvoeren.
Daar kunnen goede redenen voor zijn. Het maakt dat de gewone werking van je site niet wordt verstoord omdat javascript hard moet werken.

Ajax is sowieso asynchroon (eerste letter van Ajax). Veel valt daar niet te verbeteren.
Je stuurt een een verzoek (dit is heel licht, qua processor).
Achter je rug (asynchroon) wordt het verzoek uitgevoerd.
Als alles klaar is, word je verwittigd; dan wordt de functie uitgevoerd die je (op voorhand) bij het verzoek hebt gespecifieerd.

Javascript is een taal die "event driven" is. Dat wil zeggen dat je verwittigd wordt wanneer er iets gebeurt. Zeker met asynchrone functionaliteit is dat essentieel.
Een message loop heb je niet nodig.

Wat je probeert te doen, gebeurt al standaard.
TJVB tvb
TJVB tvb
10 jaar geleden
 
0 +1 -0 -1
En wat is de reden om ineens een script waar al 2 jaar niet op gereageerd is omhoog te halen?
Kris Peeters
Kris Peeters
10 jaar geleden
 
0 +1 -0 -1
Oops, ik had het niet gezien.

Waarschijnlijk kwam ik daar toevallig terecht toen ik op de html5 tag klikte ( http://www.phphulp.nl/labels/html5/ ).
Er zijn slechts drie resultaten bij "Resultaten in PHP scripts".

Misschien dringend tijd dat daar wat meer scripts komen
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter J
Wouter J
10 jaar geleden
 
0 +1 -0 -1
Kris wat wil jij dan voor HTML5 script zien? Ik schrijf altijd liever tutorials over dat soort dingen, maar als je scripts wilt zien moet je maar even aangeven waarover die moeten gaan.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. worker.js
  2. web_worker.html

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.