Avatar billede esben_esben Nybegynder
10. september 2011 - 20:55 Der er 6 kommentarer

Speciel synkronisering mellem browser og server

Hejsa

Jeg udvikler en musikafspiller på nettet hvor venner kan lytte til musik sammen.

Derfor bliver en brugers musikbibliotek konstant synkroniseret med server. Forbindelse via xmlHttpRequest. Serverkode er C#.

Da en bruger kan være 'væk' et øjeblik (når der er et lille hul i internetforbindelsen) har jeg lavet et object, der holder styr på brugerens nuværende musikbibliotek-state (altså præcis information om hvordan brugerens bibliotek ser ud i browseren ved sidste synkronisering.

På den måde kan en bruger 'vende tilbage' efter fx ti sekunder > genforbinde > og kun få relevante opdateringer fra server i forhold til hvad der er sket i brugerens musikbibliotek i mellemtiden (i stedet for at skulle modtage information om fx 5.000 sange igen).

Årsagen til at musikbiblioteket kan ændre sig mens brugeren er væk er fordi ens venner deler samme bibliotek.

Indtil nu har jeg manuelt skrevet alle relevante properties ind mit 'state' object. Og så manuelt sammenliget mit 'state' object med selve musikbibliotek-objectet og manuelt konstrueret javascript metoder, som dernæst bliver sendt til browseren og opdaterer det relevante.

Men det er ret omstændigt.

SPØRGSMÅL:

Findes der en slags automatisk 'relevant' opdatering af data mellem browser og server hvor de manuelle processer automatiseres?

Eller har I nogle andre idéer eller keywords, så jeg kan komme videre?

Det kan også være at jeg skal gentænke 'state' idéen. Er der nogen der har andre idéer til hvordan jeg laver noget intelligent opdatering af bibliotek til browser?

Håber I kan hjælpe.

Bedste hilsner

Esben
Avatar billede arne_v Ekspert
11. september 2011 - 03:24 #1
Gem alle opdateringer server side med et sekventielt nummer og lad browser holde styr paa hvor langt den er komme saa den kan requeste alt hvor id>X.
Avatar billede esben_esben Nybegynder
11. september 2011 - 21:15 #2
Hej Arne

Som det er nu bliver alle opdateringer netop gemt med sekventielt nummer.

Jeg forstår ikke hvordan browseren kan holde styr på hvad der er opdateret i forhold til server. Hvordan skulle den gøre det i praksis?
Avatar billede arne_v Ekspert
11. september 2011 - 22:09 #3
Det skulle naturligvis gemmes i JS/HTML.
Avatar billede esben_esben Nybegynder
12. september 2011 - 11:59 #4
Hej igen.

Ja det skal gemmes i js/html. Det er det allerede.

Hvordan tænker du at browseren skal kunne gennemskue hvad der skal opdateres. Hvis der fx er 5.000 sange. Skal browser så spørge om hver enkeltes sang på servers sekventielle nummer er steget? Det ville jo være en værre omgang frem-og-tilbage-kommunikation.

Jeg forstå ikke helt dit foreslag i praksis. Kan du give et konkret eksempel?

Mvh.
Avatar billede arne_v Ekspert
12. september 2011 - 21:31 #5
server har 777 aendringer nummereret fra 1 til 777
client er uptodate og har de 777
client mister forbindelsen
server faar opdatering 778 og 779
client faar forbindelsen genetableret
client requester alt >777
client faar 778 og 779
client er uptodate og har de 779
Avatar billede arne_v Ekspert
14. oktober 2011 - 23:52 #6
OK?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester