Ajax live statistik utan konturnuerlig trafik mellan klient och server

Publicerad 2009-11-24 23:18

Fråga

Hur kan man få ett värde på en hemsida att uppdateras så fort som möjligt när en förändring sker i en MySQL DB utan att köra en fråga 1ggr/sek med AJAX?

Kan man göra en fråga med AJAX och serven väntar till förändring sker och skickar då tillbaks värdet?

Min hemsida: www.pchallen.com säg att vi vill ha en chatt men inte generera massa trafik om inget händer i chatten, men så fort något sker ska klienterna kunna se det omedelbart.

Svar

Hej Simon

Det finns många sätt att kommunicera till och från en webbserver till en webbsida. Man kan t ex låta ett PHP-skript skapa socket-connection mot en server, t ex via någon av dessa lösningar http://us2.php.net/manual/en/sockets.examples.php

Du nämner Ajax, så antar du är ute efter en ajax-lösning för kommunikation. Historiskt sätt har man forsökt lösa det genom att behålla uppkopplingen som skapas vid en HTTP-request och sen via det skicka nya meddelande.

Ett klassiskt sätt att använda den här tekniken är att ha en gömd iframe på sin hemsida, sedan låter man framen ta emot javascript som exekveras med tiden och uppdaterar innehållet för andra delar av webbsidan.

Nu förtiden så är det vanligare med så kallad "long polling", och många Ajax implementationer har realiserat det genom XMLHttpRequest, även känt som XHR. Long polling går ut på att man skickar ett asynchront meddelande, som servern tar emot, där meddelandet begär en signal från servern när och om något har inträffat. Sedan behöver klienten inte utföra något förrän servern hör av sig. Signalen som kommer tillbaka är en http: multipart/x-mixed-replace, som sedan kopplas in till en så kallad callback, dvs en specifik java script funktion, i det här fallet onreadystatechange. Däriifrån kan sedan webbsidan utföra uppdatera sig.

Dock finns det en nackdel med den här tekniken, t ex är den webbläsarspecifik. En lösning på problemet är att använda ett färdigt Ajax-paket. För en hel del av dessa ramverk med ajax-teknik tillhandahåller alternativa lösningar beroende på vilken webbläsare besökaren använder.

Ett färdigt ramverk du kan använda är http://xajaxproject.org/developer/q_no/Comet/comet.php Som du ser på deras webbsida så implementerar detta bibliotek en gömd iframe om besökaren kör Internet Explorer, annars så använder den XHR.

Sedan kan det vara en bra idé att leta efter andra lösningar. T ex behöver man inte använda en databas för att lagra chatt-meddelande. En idé kan vara att installera en jabber-server på din server, och sedan låter du en jabber-klient köra på webbsidan. Det ger dig även möjlighetatt chatta med dina besökare via en vanliga jabber-klient på datorn, med andra ord, du slipper själv vara online på webbsidan.

Jabber kommunicerar via xmpp-protokollet och det finns olika färdiga implementationer för att integrera det på webbsidan, t ex för php finns http://code.google.com/p/xmpphp/ och för ajax kan man tänka sig något i stil med http://code.google.com/p/ijab/. Den senare ser tyvärr ut att kräva att användaren kör eget konto osv. Antagligen hade du fått skriva om den en del. Rekommenderar dig att leta runder på nätet och se om du hittar ett färdigt bibliotek som passar ditt ändamål och behov, eller så använder du tidigare nämnda tekniker.

Lycka till

On
Off

0 kommentarer

Avatar

Inte inloggad

Logga in Bli medlem

Läs mer

  • Senaste
  • Mest läst
  • Mest kommenterat

Kom in i diskussionen

Detta innehåll är skapat av Datormagazins besökare

En bilhypokondrikers upprättelse

3 kommentarer

Jan Strömbäck: Claes, jag börjar tro att han fallit i den manliga prestige-fällan, där man inte kan yttra orden: -Jag vet inte, jag kan inte det där! ;)

Månadens fråga

  • Äger du en datorplatta?

Forum

Detta innehåll är skapat av Datormagazins medlemmar.

Artikelkommentarer


För dig som vill veta mer: prenumerera

Datormagazin är datortidningen för dig som vill veta mest. Vår ambition är att göra en tidning med djupare och mer avancerade artiklar än vad du hittar i andra datortidningar. Samtidigt väjer vi inte för att på ett handfast sätt förklara hur saker och ting fungerar. Du ska alltid känna att du har nytta av tidningen.
Välkommen till Sveriges största tidskrift för avancerade datoranvändare!

Beställ prenumeration och betala direkt online

Egmont logo
© Egmont Tidskrifter