Gå til innhold

Dynamic loading


Anbefalte innlegg

Vet ikke helt om det er det rette forumet dette her, men prøver no.

 

For øyeblikket driver jeg å lager en flerbruker chat.

Altså en vanlig gruppe chat. Min idé med chatten er at den skal laste inn én gang fra starten av, og når noen poster ett nytt innlegg i chatten, skal den slide fade inn på bunnen av alle i chatten, og ikke bare seg selv.Og når den da har lastet inn den nye meldingen skal den ikke oppdateres igjen før det er en ny melding som er lagt til i databasen

 

Akkurat nå har jeg det slik at hele oppdateres hvert 1 sekund. Altså da kjører den $.ajax() og henter ut chatten fra en fil.

Men slik blir det ikke slik jeg vil ha.

 

Noen som har noen tanker om hvordan jeg kan gjøre det? Evt om eg må forklare det litt bedre?

 

- Molty

Lenke til kommentar
Videoannonse
Annonse

Vet ikke helt om det er det rette forumet dette her, men prøver no.

 

For øyeblikket driver jeg å lager en flerbruker chat.

Altså en vanlig gruppe chat. Min idé med chatten er at den skal laste inn én gang fra starten av, og når noen poster ett nytt innlegg i chatten, skal den slide fade inn på bunnen av alle i chatten, og ikke bare seg selv.Og når den da har lastet inn den nye meldingen skal den ikke oppdateres igjen før det er en ny melding som er lagt til i databasen

 

Akkurat nå har jeg det slik at hele oppdateres hvert 1 sekund. Altså da kjører den $.ajax() og henter ut chatten fra en fil.

Men slik blir det ikke slik jeg vil ha.

 

Noen som har noen tanker om hvordan jeg kan gjøre det? Evt om eg må forklare det litt bedre?

 

- Molty

 

Dette er fullt mulig hvis du har tid å ressurser til det. Du kan kikke litt på WebSockets og eventuelt node.js.

 

Ulempen med dette er at teknologien er ganske ny (definert i HTML5 draft) og dermed er det bare safari og chrome som har brukbar støtte. En annen ting er at for å kjøre nodejs så må du ha rot-tilgang til webserver og er dermed ganske vanskelig å installere på shared hosts. nodejs er serverside javascript, altså en event-basert server som ikke har noe sammenheng med Apache eller annen thread-basert http server.

 

Håper dette hjelper :) Jeg har lagt ut noen ressurser om nodejs i denne tråden

Lenke til kommentar

Ja men hvis vi tenker før HTML5

Finnes jo slike funksjoner utenom HTML5 eller? Slik at de blir brukenes for (nesten) alle browserene (?)

 

Jeg har ikke vært borti annen teknologi som lar deg "pushe" meldinger / innhold til brukeren uten at de sender request først, eller ved bruk av timer. Hvis du finner noe om dette som ikke omhandler WebSockets, så gi meg beskjed i denne tråden asap. :) Det er et veldig spennende emne!

Endret av emilkje
Lenke til kommentar

Du kan selvsagt emulere push teknologi ved at brukeren sender en request og serveren venter til den har fått mer informasjon før den sender respons tilbake. Kombinert med en ajax callback som sender ny request hver gang klienten får en respons så vil jo dette emulere push. Dette kalles long polling, og er uhyre vanskelig å ha god error handelig på. Et annet problem er også at det ikke er full duplex. Dette kan derfor bli veldig vanskelig å implementere i en chat-applikasjon.

 

Lenker:

http://en.wikipedia.org/wiki/Comet_(programming)

http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push

Endret av emilkje
Lenke til kommentar

Takk for flotte svar der. Skal se på ka eg kan klare å få ut av det.

Men hvis jeg skal pushe, hvordan kan jeg da sjekke om den nye meldingen ikke er lastet inn?

 

Kan jeg på en måte splitte det jeg henter ut fra serveren, med det som ligger ute allerede? slik at den finner det som ikke lastet inn?

 

Eks:

var unread = data.split($("#chat").html()); // Hvor unread[1] er det som ikke er lastet inn enda (?)

if(data != $("#chat").html()){
$("#chat").append(unread).children(":last").hide().fadeIn("slow"); // Hvor hvert innlegg er innenfor hver sin <span>
}

Først så kjører jeg slik at den henter ut innholdet i chat, og så henter den informasjon fra en fil og lagrer det i en variabel som vist ovenfor (data) som blir oppdatert hvert sekund via setInterval();

 

Og mens vi allerede er i gang. Hva er best og hente informasjon med? XmlHttpRequest eller jquery sin innebygde funksjon $.ajax()?

Hva er best å bruke når det gjelder tid? setInterval (og hvor lenge mellom hver henting) eller setTimeout. Altså der man da kjører en funksjon som skal hente ut hele chatinnholdet i en annen .

 

- Molty

Lenke til kommentar

Men altså, i databasen så er det liksom følgende:

Id, userid, message, time, ip, chatid

 

Og det du sier der er det jeg ville fram til i forrige innlegg, men prøvde ut koden min og den fungerte ikke. Split på det som var inni #chat elementet gav bare samme verdi, slik at den ikke kunne se om det var noe nytt liksom...

 

Har dere noen annen anelse om hvordan jeg kan sjekke om den er lastet inn eller ei?

 

- Molty

Lenke til kommentar

Oppdateringer generelt vet jeg kossn eg skal gjøre. Er bare sånn chat funksjon eg vil ha sånn at de sklir inn når det kommer nye.

 

Har egentlig fått det til no, men da brukte jeg id på poster. altså eg lastet inn 2 ting. id på siste melding og meldingene

og hvis den siste ikke var inne på chatten så lastet den inn den nye meldingen og satte en ny id som var den siste

Hvis du forstår liksom

 

- Molty

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...