martedì 14 ottobre 2014

Creare un client come Dropbox

Dropbox è un servizio che permette di sincronizzare i file su un server, è costituito da un programma da installare sui nostri pc (client), questo programma deve costantemente controllare i contenuti di una cartella e attivarsi quando un file è stato modificato, per spedire il nuovo file sul server centrale per la sincronizzazione.
Oggi per semplicità vedremo solo la parte del controllo periodico dei file.
Prima di tutto piazziamoci sulla cartella che vogliamo esaminare, per questo creiamo con questo codice:

on mouseUp
   answer folder "Select a directory:"
   if it is empty then exit mouseUp
   set the directory to it   
   set the listaFile of this card to the long files
   send "checkUpdate" to me in 2 seconds
end mouseUp

Cliccando su di esso la cartella corrente diventa quella scelta dall'utente.
Ora scriviamo il codice del messaggio checkUpdate che servirà a controllare continuamente il contenuto della cartella corrente:

on checkUpdate
   put the listaFile of this card into old_files
   if the long files is not old_files then      
      answer "Qualcosa è cambiato!"      
      set the listaFile of this card to the long files
   end if
   send "checkUpdate" to me in 2 seconds
end checkUpdate

Come vedete ogni due secondi si controlla il contenuto della cartella e si nota se c'è una differenza rispetto all'ultimo controllo, the long files produce una lista dei file con il loro dettagli. Ogni riga prodotta da the long files contiene il nome del file, la dimensione e altri dati.tutti separati da virgola.
Questo è in pratica ciò che serve sul lato client, discorso di verso è sul server, che deve riuscire a capire se il file è nuovo, pubblicarlo da qualche parte per permettere anche agli altri client di sincronizzarsi.