molty Skrevet 11. mars 2011 Del Skrevet 11. mars 2011 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
emilkje Skrevet 12. mars 2011 Del Skrevet 12. mars 2011 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
molty Skrevet 12. mars 2011 Forfatter Del Skrevet 12. mars 2011 Ja men hvis vi tenker før HTML5 Finnes jo slike funksjoner utenom HTML5 eller? Slik at de blir brukenes for (nesten) alle browserene (?) Lenke til kommentar
emilkje Skrevet 12. mars 2011 Del Skrevet 12. mars 2011 (endret) 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 12. mars 2011 av emilkje Lenke til kommentar
emilkje Skrevet 12. mars 2011 Del Skrevet 12. mars 2011 (endret) 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 12. mars 2011 av emilkje Lenke til kommentar
molty Skrevet 12. mars 2011 Forfatter Del Skrevet 12. mars 2011 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
Wackamole Skrevet 12. mars 2011 Del Skrevet 12. mars 2011 Spørre databasen om det ligger en ny melding som ikke er lastet inn hos brukeren, la oss si hvert sekund. - Hvis det ligger en ny melding så kan du hente denne.. - Er vell eneste måten foreløpig.. Lenke til kommentar
molty Skrevet 13. mars 2011 Forfatter Del Skrevet 13. mars 2011 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
Terrasque Skrevet 14. mars 2011 Del Skrevet 14. mars 2011 hm, du kan jo se litt på hvordan vi har gjort oppdateringer på http://www.scenemusic.net/ Lenke til kommentar
molty Skrevet 15. mars 2011 Forfatter Del Skrevet 15. mars 2011 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå