Gjest Slettet-NvO6MF Skrevet 29. september 2014 Del Skrevet 29. september 2014 Hei! Jeg skal sette sammen et typisk chat-program for mobile enheter. Selve programmeringen er ikke noe problem, utfordringen er å finne den mest effektive måten å kommunisere mellom server og klient. Klienten vil lagre samtaler lokalt, slik at det kun er nye meldinger som må sendes fra serveren. Dette er jo et veldig bredt spørsmål, så jeg lurer på om det er noen som vet om guider eller dokumenter som generelt beskriver best practices for kommunikasjon mellom server og klient. Grunntanken er at alle meldinger får et datostempel og klienten kan da spørre etter alle meldinger nyere enn denne datoen. Serveren må da finne alle nye meldinger, og deretter sjekke om klienten er del av samtalene som nyere meldinger hører til, og sende disse. Dette blir derimot et problem når en bruker blir med i en eksisterende samtale der det finnes eldre meldinger. Hvordan gjøres i såfall dette? Jeg ser også for meg at denne metoden blir et problem på større databaser, da det kan ta veldig lang tid å søke gjennom tusenvis (eller millioner) av meldinger, samt at dette må gjøres hver gang en hvilken som helst klient skal sjekke etter meldinger. Så tilbake til start, finnes det en oversikt over best practices, ev. forklaring på hvordan for for eksempel Facebook Messenger eller andre chat-programmer løser dette. Lenke til kommentar
Sokkalf™ Skrevet 29. september 2014 Del Skrevet 29. september 2014 Facebook (og mange andre) bruker såvidt jeg vet XMPP. Det burde kanskje du også, fremfor å finne opp hjulet på nytt - så sant du ikke har noe nytt som gir verdi. Lenke til kommentar
etse Skrevet 29. september 2014 Del Skrevet 29. september 2014 (endret) Så lenge du har en Index på feltet du skal sortere og filtrere etter når du gjør spørring burde det absolutt ikke bli noe problem med lange samtaler. Om du f.eks. setter en index på "mottaker_bruker_foreign_key" vil det være veldig lett for systemet å filtrere ned til de resultatene som er aktuelle for en bruker. Dette settet burde da være i fint håndterbar størrelse. Uansett anbefaler jeg som Sokkalf over her å heller bruke en veldefinert protokoll. Dette gjør at du lett kan støttes av andre chatteklienter - noe som vil gjøre brukere som allerede bruker ting som Pidgin eller random mobil-chatte-app veldig glade Videre burde du ikke ha pulling hele tiden - det ser jeg ikke noe behov for. Når en klient er aktiv virker det mye lettere at serveren bare pusher meldingen rett til aktive klienter samtidig som den putter meldingen i databasen. Så slipper du å gjøre søk gjennom databasen mer enn akkurat når klienten logger på. Endret 29. september 2014 av etse Lenke til kommentar
Gjest Slettet-NvO6MF Skrevet 26. oktober 2014 Del Skrevet 26. oktober 2014 Takk for svar. Det skal brukes relativt internt, så dette med støtte for andre klienter er ganske uaktuelt. Men uansett så er det jo kjekt å bruke veldefinerte protokoller 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å