Toon posts:

[webdev] automatische update, pollen of hoe?

Pagina: 1
Acties:

Verwijderd

Topicstarter
.

[ Voor 99% gewijzigd door Verwijderd op 31-10-2023 22:44 ]


  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Ik denk dat je zonder extra software dit niet voor elkaar kan krijgen... en eigenlijk maar goed ook natuurlijk.... je kunt nog denken aan een javaapplet of zelfs een active-x oplossing maar dan zul je in elk geval aan de client side dus Java VM of IE moeten hebben.

Nu is polling volgens mij niet eens zo slecht hoor. aleen moet je het niet elke 100ms doen
Je kunt dan beter in 1 keer een wat grote xml ophalen en juist met javascript verdelen.
Dus b.v je haalt 100 Messages op en stop ze in een array
En je polt dan de array.
Iets anders wordt het als je realtime info moet weergeven.. dan blijft het probleem van schaalbaarheid bestaan... mijn idee is java...

Verwijderd

Topicstarter
.

[ Voor 98% gewijzigd door Verwijderd op 31-10-2023 22:44 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Met serverside scripting is het niet mogelijk om een event te sturen dat er data klaar staat, simpelweg omdat het HTTP-protocol gebaseerd is op requests. Geen requests, geen data, klaar. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kuhlie
  • Registratie: December 2002
  • Niet online
Je gebruikt toch al xmlhttp? gewoon daarmee een verbinding maken naar een php-scriptje dat sleep()t tot er een update is en dan pas uitvoer geeft.

Edit: een daarin bijv. javascript stoppen dat je in het hoofddocument met eval() uitvoert ;)

[ Voor 25% gewijzigd door Kuhlie op 10-05-2005 22:04 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Kuhlie schreef op dinsdag 10 mei 2005 @ 21:59:
Je gebruikt toch al xmlhttp? gewoon daarmee een verbinding maken naar een php-scriptje dat sleep()t tot er een update is en dan pas uitvoer geeft.
Realiseer je dan wel dat je per bezoeker van je site een constant gelockte thread hebt lopen, lijkt me niet echt optimaal voor drukbezochte sites. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kuhlie
  • Registratie: December 2002
  • Niet online
Tja, het is dan de keuze 'veel pollen -> veel dataverkeer' of 'gelockte thread -> hoge serverload/veel geheugengebruik'.

Ho wacht: ik lees nu pas "ook het aantal open tcp/ip connecties is redelijk beperkt", tja, dan houdt het al gauw op denk ik ;)

[ Voor 43% gewijzigd door Kuhlie op 10-05-2005 22:06 ]


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:11
Kuhlie schreef op dinsdag 10 mei 2005 @ 21:59:
Je gebruikt toch al xmlhttp? gewoon daarmee een verbinding maken naar een php-scriptje dat sleep()t tot er een update is en dan pas uitvoer geeft.
Edit: een daarin bijv. javascript stoppen dat je in het hoofddocument met eval() uitvoert ;)
Maar hoe weet het PHP scriptje dat er nieuwe uitvoer is? Dan moet je op de server dus gaan pollen. ik kan me voorstellen dat dit met veel gebruikers ook niet echt denderend performant is...

spuit 11 :z

Regeren is vooruitschuiven


  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 12-12-2025
Wat je kan proberen is dit:
je laat bij het eerste gebruik een script contact zoeken met een centrale logserver, zodat je weet waar je info gebruikt wordt.
Op de server loopt een proces dat, zodra er nieuwe info is, al die sites een request stuurt (dus http://url/.../update.asp) o.i.d., en dat die update.asp dan de gegevens gaat ophalen (of die worden al meegestuurd met de request uri? evt. een POST uitvoeren i.p.v. GET?)
Vervolgens schrijft update.asp de binnengekregen data weg naar een file, en de bezoekers openen steeds die file i.p.v. het bestand op jouw server.

We are shaping the future


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:00
Ik zie dat Java(applets) al is genoemd, misschien kun je ook iets doen met behulp Flash. Ben er zelf niet zo van op de hoogte hoe je het een en ander implementeert.

Waarom is het zo belangrijk dat er elke n milliseconden bepaalde data opnieuw wordt opgehaald? HTTP is nou eenmaal stateless, dus zul gebruik moeten maken van een ander protocol. iig iets wat wel in staat is continue een verbinding open te houden met een client.

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Je moet wel pollen, dat is het enige dat werkt. Je kan wel met xmlhttprequest wel gedeeltes van een pagina ophalen, dus zoek daar eens op. Het staat ook wel bekend onder de naam 'ajax'.

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
2 mogelijkheden die ik zie

1 : creeer 2 bestanden, 1 met alleen unix-time van laatste wijziging als deze verschilt met client pagina haal dan bestand 2 op. Scheelt een heleboel dataverkeer.

2 : Indien het niet echt real-time moet, maar alleen realtime lijken. Maak op de server het bestand aan voor 10 seconden en toon het dan met javascript stukje voor stukje. En haal na 10 sec een nieuw bestand op, client loopt dan max 9 sec achter.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Gomez12 schreef op dinsdag 10 mei 2005 @ 22:55:
2 mogelijkheden die ik zie

1 : creeer 2 bestanden, 1 met alleen unix-time van laatste wijziging als deze verschilt met client pagina haal dan bestand 2 op. Scheelt een heleboel dataverkeer.
Hoe, bij wie en vooral: wanneer heb je die check in gedachten? ;)
2 : Indien het niet echt real-time moet, maar alleen realtime lijken. Maak op de server het bestand aan voor 10 seconden en toon het dan met javascript stukje voor stukje. En haal na 10 sec een nieuw bestand op, client loopt dan max 9 sec achter.
Polling dus. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
-NMe- schreef op dinsdag 10 mei 2005 @ 23:22:
[...]

Hoe, bij wie en vooral: wanneer heb je die check in gedachten? ;)
bestanden op server aanmaken. bestand 1 op de client via polling opghalen ( maar omdat dit een klein bestand is vermindert je data verkeer ) daarna checkt wat client-side javascript of het een nieuw bestand is zonee, dan volgende keer weer via polling bestand 1 ophalen zoja dan bestand 2 ophalen en tonen.
[...]

Polling dus. ;)
Polling met cache dus, want het cache gedeelte zie ik niet in zijn post terug. Dit scheelt een heleboel dataverkeer en aantal requests.

Je moet toch met polling bezig gaan als je onafhankelijk van plugins wilt blijven. Want http stuurt nog steeds niks naar de client uit zichzelf.

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Overigens stelt de TS onmogelijke voorwaarden*):
- geen open tcp/ip-verbinding
- maar ook geen polling
tja, informatie komt niet aanvliegen en voorspellende gaven hoef je van javascript ook niet te verwachten.

*) of lees ik dat verkeerd, dan moet de TS me maar verbeteren...

[ Voor 3% gewijzigd door Kuhlie op 10-05-2005 23:50 ]


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Kuhlie schreef op dinsdag 10 mei 2005 @ 23:49:
Overigens stelt de TS onmogelijke voorwaarden*):
- geen open tcp/ip-verbinding
- maar ook geen polling
tja, informatie komt niet aanvliegen en voorspellende gaven hoef je van javascript ook niet te verwachten.

*) of lees ik dat verkeerd, dan moet de TS me maar verbeteren...
Daar waren wij ook achter. Het komt er op neer dat TS maar 1 mogelijkheid heeft, wil hij geen dingen als flash/java gebruiken: polling.

Verwijderd

Afhankelijk van een aantal zaken (je bezoeker moet niet langer dan bijv. 3 minuten op je pagina blijven, de data die je toont moet regelmatig (lees: binnen enkele seconden) wijzigen, en is het belangrijk dat je bezoeker dáádwerkelijk realtime info ziet?) kun je deze oplossing toepassen volgens mij;

Werk met een vertraging.
Je kunt meten wat de maximale tijd van een bezoeker op jouw webpagina is en laten we daarbij een voorbeeld nemen, 3 minuten (volgens mij is dit al bijzonder lang voor een webpagina, maar dit hangt natuurlijk volkomen af van het feit welke content word geboden. Voor lange teksten e.d. zal het niet opgaan).

Haal nu 3 minuten data uit het verleden op uit je database.
Pseudo SQL;

code:
1
SELECT * FROM database WHERE timestamp > (huidige tijd - 3 minuten)


Met deze data kun je de bezoeker gaan voorzien van 3 minuten `realtime` (met een vertraging van 3 minuten) informatie. Je kunt nu met clientside technieken, Javascript en Flash (AS) zijn er twee van, de bezoeker gedosseerde informatie toesturen.

Bijvoorbeeld, ververs de inhoud van een DIV element elke 5 seconden met nieuwe data, die al bij het laden van je pagina achter de schermen opgeslagen is. Oftewel, géén extra data-request iedere 5 seconden maar éénmalig (lees: per pagina-refresh of pagina-change) aan het begin van het laden van de pagina.

Nogmaals, deze oplossing is afhankelijk van de zaken die ik in den beginne opsomde.

Edit; een voorbeeld van deze `techniek` is het uitzenden van de Oscars in de VS die met enkele minuten vertraging wordt uitgezonden en alhoewel dat zeer zeker niet helemaal vergelijkbaar is, geeft dat wel aan dat je met vertraging een hoop kunt bereiken.

In dat geval, het tonen van de borst van mevrouw Jackson die ik overigens zelf, gezien de lelijke vorm van dat lichaamsdeel in het betreffende jurkje, wel van mijn buis weg zou zappen mocht dit weer gebeuren...

[ Voor 18% gewijzigd door Verwijderd op 11-05-2005 14:06 ]


Verwijderd

Topicstarter
.

[ Voor 99% gewijzigd door Verwijderd op 31-10-2023 22:44 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23:28

mulder

ik spuug op het trottoir

Maar hoeveel gebruikers gaat het nou eigenlijk dan? Als het een zwaar drukke publieke website is dan zou je nog wel een paar pittige servers moeten hebben, maar als het een speciefieke webapplicatie is moet bv de al vaker genoemde java applet een prima oplossing zijn?

oogjes open, snaveltjes dicht


  • Leon T
  • Registratie: Juni 2001
  • Niet online

Leon T

Ni!

Mocht dit om een monitoring systeem gaan; is het dan niet netter om een webinterface op te zetten en dan op het moment dat er een event plaatsvind dat jouw server een SNMP trap naar een client stuurt die daar dan een actie (IE openen, popup) laat plaatsvinden?

Dan heb je een efficient push mechanisme.

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 19:46
Tweakertje schreef op woensdag 11 mei 2005 @ 22:03:
Mocht dit om een monitoring systeem gaan; is het dan niet netter om een webinterface op te zetten en dan op het moment dat er een event plaatsvind dat jouw server een SNMP trap naar een client stuurt die daar dan een actie (IE openen, popup) laat plaatsvinden?
Dan heb je een efficient push mechanisme.
Hoe ontvangt de client die melding?

  • spone
  • Registratie: Mei 2002
  • Niet online
djluc schreef op woensdag 11 mei 2005 @ 22:26:
[...]
Hoe ontvangt de client die melding?
In Outlook Web Access krijg je keurig een nieuwe melding als er email is...hoe gebeurt dat? Ook via polling? Of gebeurt dat op een andere manier die misschien wel bruikbaar zou kunnen zijn voor de TS?

[ Voor 16% gewijzigd door spone op 11-05-2005 22:33 ]

Game: i5-14600K, 32GB DDR5-6000, RTX 5070 Ti; Laptop: MacBook Pro M1 Pro 14" 16/512; Server: R9-7950X, 96GB DDR5-5600; Woonkamer: Mac Mini M4 16/256


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 19:46
spone schreef op woensdag 11 mei 2005 @ 22:32:
[...]
In Outlook Web Access krijg je keurig een nieuwe melding als er email is...hoe gebeurt dat? Ook via polling? Of gebeurt dat op een andere manier die misschien wel bruikbaar zou kunnen zijn voor de TS?
Polling, maar ik het de laatste versies nog niet gezien dus het kan nog veranderd zijn.
Pagina: 1