Toon posts:

[AJAX] Data pushen van server naar client

Pagina: 1
Acties:

  • Pyr0wl
  • Registratie: Juli 2010
  • Laatst online: 01-02 10:39
Beste Tweakers!

Als je de topic titel leest, denk je waarschijnlijk iets in de trend van "weer iemand die geen google heeft gebruikt".

Wel, dit is niet het geval. Ik heb al een simpele chatclient in elkaar geknutselt die werkt met polling en met long polling (een variant van comet programming, push dus)

Maar, ik zoek nog manieren om dit te verbeteren, ik wil dit nog een stapje verder brengen. Enig probleem, ik weet niet goed hoe. Ik vind maar weinig informatie om aan HTTP streaming te doen, door middel van bijvoorbeeld het XMLHttpRequest object en naar mijn gevoel zijn er nog redelijk wat nadelen aan long polling (correct me if I'm wrong) ivm server load etc. Ik zou dit graag terugbrengen naar iets "tammer" of die long polling wat verbeteren.

Ik weet dat HTTP niet voor streaming bedoelt is, maar als ik het goed heb zijn er manieren om toch zo iets dergelijks te bereiken maar vaak als ik google kom ik terecht op websockets of iets gelijkaardig door middel van flash of een java applet, iets wat ik niet wil doen.

Als iemand tips of informatie heeft, dan hoor ik het graag!
Pyr0wl

  • RobIII
  • Registratie: December 2001
  • Laatst online: 03:26

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Pyr0wl schreef op donderdag 12 mei 2011 @ 15:54:
vaak als ik google kom ik terecht op websockets...iets wat ik niet wil doen.
Want :? Die zijn er juist uitermate voor geschikt... Waarom zou je dat niet willen doen? Als je al polling en long polling werkend hebt (voor non-HTML5 browsers) dan lijkt de volgende logische stap me toch echt websockets.

Datzelfde geldt overigens ook voor Flash en/of applets. Ja, je bent afhankelijk van Flash/Java, maar dat ben je ook van de browser als je websockets gebruikt; en (natuurlijk in mindere mate) feitelijk ook van Ajax-capabele browsers voor je (long) polling. Kwestie van een tabelletje met plusjes (voordelen) en minnetjes (nadelen) voor elke methode maken en daar degene met de meeste plusjes uitkiezen; en dat tabelletje maak je natuurlijk op basis van je specifieke wensen/eisen. Dat is voor iedereen anders.

offtopic:
Wat is het nut van de medeauteur :?

[Voor 67% gewijzigd door RobIII op 12-05-2011 16:01]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 13-01 10:59
Long polling is heel goed performant mogelijk, maar het vereist wel juiste configuratie van je server. Tussen sockets (websockets of Flash/Java) en long polling zit verder niks, dus veel keuze heb je verder ook niet.

Als je long polling niet mogelijk acht, kun je gaan voor websockets met Flash fallback (vallen er helaas alsnog wel een berg clients af, maar goed).

Mooiste lijkt me websockets met long polling fallback.

[Voor 37% gewijzigd door Bosmonster op 12-05-2011 16:07]


  • Cartman!
  • Registratie: April 2000
  • Niet online
Kijk eens naar APE (Ajax Push Engine), het is een webserver geoptimaliseerd voor dergelijke doeleinden :)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 13-01 10:59
Ook erg nice voor dit soort doeleinden overigens is nodejs.

[Voor 16% gewijzigd door Bosmonster op 12-05-2011 16:54]


  • Pyr0wl
  • Registratie: Juli 2010
  • Laatst online: 01-02 10:39
RobIII schreef op donderdag 12 mei 2011 @ 15:56:
[...]

Want :? Die zijn er juist uitermate voor geschikt... Waarom zou je dat niet willen doen? Als je al polling en long polling werkend hebt (voor non-HTML5 browsers) dan lijkt de volgende logische stap me toch echt websockets.

Datzelfde geldt overigens ook voor Flash en/of applets. Ja, je bent afhankelijk van Flash/Java, maar dat ben je ook van de browser als je websockets gebruikt; en (natuurlijk in mindere mate) feitelijk ook van Ajax-capabele browsers voor je (long) polling. Kwestie van een tabelletje met plusjes (voordelen) en minnetjes (nadelen) voor elke methode maken en daar degene met de meeste plusjes uitkiezen; en dat tabelletje maak je natuurlijk op basis van je specifieke wensen/eisen. Dat is voor iedereen anders.

offtopic:
Wat is het nut van de medeauteur :?
Het gaat eigenlijk om een vak dat widecr0w en ik krijgen op school waar het de bedoeling is dat we webapplicaties ontwikkelen met AJAX functionaliteit. Als ik gerbruik ga maken van Flash en java applets, dan blijft er maar weinig AJAX over. Ik ben er volledig mee akkoord dat Flash/Java een goede oplossing zou zijn, eentje waar je nog redelijk veel opties mee hebt, maar op dit moment behoort het niet tot de mogelijkheden. Als ik wat vrije tijd heb zal ik er mij echter wel eens mee bezighouden.

widecr0w en ik hebben deze post ook gezamelijk opgesteld omdat we eigenlijk een beetje met hetzelfde probleem zitten: we willen een stapje verder maar we lopen al snel tegen de limitaties van het web aan. Vandaar dat hij als mede auteur is aangeduid. Misschien overbodig, maar het stoort toch niemand? (en we wilden deze feature natuurlijk ook eens uittesten :9 )

Verder heb ik nog even zitten googlen en ik kwam dit tegen: http://ajaxpatterns.org/HTTP_Streaming
Als ik het goed heb, komt dit in grote lijnen overeen met het long polling patroon, met als enig verschil dat de verbinding gewoon open wordt gehouden en dat er meer wordt "gehacked" om het doel te bereiken. Iemand hier een mening over?
Tussen sockets (websockets of Flash/Java) en long polling zit verder niks, dus veel keuze heb je verder ook niet.
Echt, niets? Dus het zijn vanaf dan eigenlijk enkel varianten op long polling of gewoon, sockets?

  • RobIII
  • Registratie: December 2001
  • Laatst online: 03:26

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Pyr0wl schreef op donderdag 12 mei 2011 @ 22:28:

Echt, niets? Dus het zijn vanaf dan eigenlijk enkel varianten op long polling of gewoon, sockets?
Wat wil je nou eigenlijk horen :? Dat er stiekem toch iets is? Iets wat we allemaal met elkaar hebben afgesproken lekker niet aan je te vertellen?
RobIII schreef op donderdag 12 mei 2011 @ 15:56:
Als je al polling en long polling werkend hebt (voor non-HTML5 browsers) dan lijkt de volgende logische stap me toch echt websockets.
Bosmonster schreef op donderdag 12 mei 2011 @ 16:05:
Mooiste lijkt me websockets met long polling fallback.
Bosmonster schreef op donderdag 12 mei 2011 @ 16:05:
Tussen sockets (websockets of Flash/Java) en long polling zit verder niks, dus veel keuze heb je verder ook niet.
Verder: fijn dat je 2 alinea's besteedt aan 't uitleggen van een OT vraagje (waarvoor medeauteurs overigens niet zijn bedoeld) maar verder niet ingaat op de zinnige info (en alternatieven) die je krijgt van de andere posters. Er zijn zat varianten op allerlei polling methodes en ze hebben allemaal hippe sjieke namen maar uiteindelijk komen ze linksom of rechtsom allemaal op dezelfde essentie neer. Zo ook je webserver: die kun je vervangen door een beter(e) geschikt(e) merk/versie maar het is-en-blijft gewoon basic HTTP verkeer. En daar kom je, behalve met sockets, niet om heen.

[Voor 38% gewijzigd door RobIII op 12-05-2011 22:39]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Pyr0wl
  • Registratie: Juli 2010
  • Laatst online: 01-02 10:39
Wat wil je nou eigenlijk horen :? Dat er stiekem toch iets is? Iets wat we allemaal met elkaar hebben afgesproken lekker niet aan je te vertellen?
Serieus?
Verder: fijn dat je 2 alinea's besteedt aan 't uitleggen van een OT vraagje (waarvoor medeauteurs overigens niet zijn bedoeld) maar verder niet ingaat op de zinnige info (en alternatieven) die je krijgt van de andere posters. Er zijn zat varianten op allerlei polling methodes en ze hebben allemaal hippe sjieke namen maar uiteindelijk komen ze linksom of rechtsom allemaal op dezelfde essentie neer. Zo ook je webserver: die kun je vervangen door een beter(e) geschikt(e) merk/versie maar het is-en-blijft gewoon basic HTTP verkeer. En daar kom je, behalve met sockets, niet om heen.
Van die mede auteur, sorry hoor. Ik zal het in mijn achterhoofd houden.

En ik zie inderdaad dat ik daar niet op heb gereageerd, het zal waarschijnlijk verloren gegaan zijn met copy pasten. Anyway, ik ben dankbaar voor de links en info die gegeven zijn + ik heb ze gebookmarked voor later eens rustig door te nemen (zeker die node.js ziet er interessant uit) maar ik ben vrij gelimiteerd qua tools voor deze opdracht, het is de bedoeling dat we enkel werken met javascript (zonder frameworks of iets dergelijks) en een serverside taal naar keuze. Ik besef nu ook dat dit info was die nuttig geweest zou zijn in de TS, maar goed, al doende leert men.

Verder ben ik blij dat je zegt: "uiteindelijk komen ze linksom of rechtsom allemaal op dezelfde essentie neer.". Het zijn net al die verschillende benamingen etc. die het voor mij wat verwarrend maakten, wat mij de indruk gaf dat er nog andere technieken waren die verder gingen dan long polling. Blij dat dit uitgeklaard is.

Ik raad je aan om in het vervolg iets minder snauwend te reageren. Ik probeer ook alleen maar dingen bij te leren, en het leek mij geschikt om het hier op het forum te vragen aangezien hier wel bekwame mensen rondhangen. En als je opmerkingen hebt over de TS of iets dergelijks, kan je dit ook op een normale manier zeggen, dan zal ik daar in het vervolg heus wel rekening mee houden.

[Voor 10% gewijzigd door Pyr0wl op 12-05-2011 23:23]


  • Wizz15
  • Registratie: Januari 2004
  • Laatst online: 26-10-2022
Aan de TS: als de serverside taal niet uitmaakt, dan denk ik dat nodejs in dit geval een goede optie is. socket.io is in node.js geschreven en levert zelf de client-side code aan om het handeltje werkend te krijgen.

Hierbij hoef je dus niet zelf de fallbacks te verzorgen, dit vangt de server al voor je af (oa: websockets, long polling, polling en Flash sockets). Ik heb hier wat mee gespeeld en die fallbacks werken goed in verschillende browsers, client merkt er eigenlijk niets van (behalve dan dat het niet 'real-time' is met polling).

Maar zoals al eerder gezegd: je kan enkel kiezen uit de opties die al gegeven zijn (sockets, polling, comet). Pluspunt is wel dat FF/Opera/Webkit volgens mij al allemaal websockets ondersteunen. Bij oudere browsers zit je toch echt vast aan Flash of polling.

PSN: RikBruil | BFBC2 stats


Acties:
  • 0Henk 'm!

  • Pyr0wl
  • Registratie: Juli 2010
  • Laatst online: 01-02 10:39
Wizz15 schreef op zaterdag 14 mei 2011 @ 23:08:
Aan de TS: als de serverside taal niet uitmaakt, dan denk ik dat nodejs in dit geval een goede optie is. socket.io is in node.js geschreven en levert zelf de client-side code aan om het handeltje werkend te krijgen.

Hierbij hoef je dus niet zelf de fallbacks te verzorgen, dit vangt de server al voor je af (oa: websockets, long polling, polling en Flash sockets). Ik heb hier wat mee gespeeld en die fallbacks werken goed in verschillende browsers, client merkt er eigenlijk niets van (behalve dan dat het niet 'real-time' is met polling).

Maar zoals al eerder gezegd: je kan enkel kiezen uit de opties die al gegeven zijn (sockets, polling, comet). Pluspunt is wel dat FF/Opera/Webkit volgens mij al allemaal websockets ondersteunen. Bij oudere browsers zit je toch echt vast aan Flash of polling.
Thanks! :D Heb dit ook gelijk gebookmarked, deze avond eens over inlezen en proberen te implementeren. Op het moment moest het enkel werken in Firefox/Chrome, dus ik moest niet echt rekening houden met andere browsers. Dit zou veel te veel tijd vergen en een volledige featureset wordt feller geapprecieerd, maar qua featureset zit het al redelijk goed, dus ik kan dit wel gebruiken om het nog een stapje verder te brengen!
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee