2015-09-10 17 views
6

a febbraio 2015 Dropbox ha rilasciato una nuova funzionalità che vi ha permesso di attivare l'apertura locale di un file dalla loro interfaccia web: https://blogs.dropbox.com/dropbox/2015/02/new-way-to-open-dropbox-files/Come funziona il pulsante Dropbox Open?

Ulteriori informazioni sono qui:

Ecco un esempio del pulsante Apri visibile dal menu di scelta rapida:

enter image description here

Ed ecco la breve visualizzazione del popup che è apparentemente connette al client di sincronizzazione:

enter image description here

E 'chiaro che il client di sincronizzazione Dropbox deve essere installato, in modo da avere un po' codice locale nativo in esecuzione, che consente alcune cose fantasiose che sarebbero impossibili con solo Javascript nel browser, ma in qualche modo la pagina del browser è in grado di fare alcune cose inaspettate:

  1. visualizzare selettivamente il pulsante Apri sulla base delle informazioni da parte del cliente di sincronizzazione (se è acceso e se il file esiste localmente)
  2. grilletto, facendo clic sul pulsante, un'azione da parte del client di sincronizzazione (l'apertura del file nella sua app di default o apertura della cartella in Explorer/Finder)

Con quale meccanismo tecnico funzionano queste due cose?

+0

Probabilmente qualcosa sulla falsariga di 'NPAPI'. –

+0

Ci vorrebbe una buona dose di reverse engineering per trovare il canale esatto che DropBox usa per fare in modo che questo accada, ma ci sono molti modi possibili. Vuoi sapere come lo fanno, o come potresti farlo? –

+0

Entrambi ... curiosità intellettuale e mi chiedo anche se posso cooptare il loro sistema per attivare l'apertura di una cartella locale in Dropbox dal mio servizio web. – dlo

risposta

1

questa è solo una supposizione, ma probabilmente qualcosa di simile:

  1. Il client di sincronizzazione sa tutto di esistenza file locale.
  2. Il client di sincronizzazione invia tali informazioni al server di sincronizzazione, quindi anche il server lo sa.
  3. La pagina Web Dropbox può quindi mostrare in modo selettivo il pulsante Apri.
  4. Facendo clic sul pulsante Apri, la pagina Web contatta il server di sincronizzazione, che a sua volta invia un messaggio al client di sincronizzazione per "aprire quel file".
  5. Il client di sincronizzazione apre quel file. Su un Mac questo sarebbe un semplice comando di shell open [path].

Niente di eccezionale nel browser.

+0

La tua spiegazione salta i passaggi chiave. ad esempio, nel passaggio 3, in che modo la pagina Web visualizza in modo selettivo il collegamento in base a ciò che sa il client di sincronizzazione? In particolare, qual è il meccanismo con cui possono parlare tra loro? Sembrerebbe che Javascript puro non dovrebbe avere un modo per farlo, e non ci sono plugin o estensioni in esecuzione nel browser per quanto posso dire. – dlo

+0

Quello che ho cercato di delineare è che la pagina web non parla con il client di sincronizzazione, parla solo con il server. Questo dovrebbe essere possibile con l'AJAX comune. – merikonjatta

+0

Hmm ... il che implica che anche i comandi "file aperti" vanno da browser a server e quindi per sincronizzare il client. Certamente è possibile, e spiegherebbe il ritardo quando scegli di aprire il file ... ci vuole più tempo che se fosse solo un trigger locale. – dlo