Avevo pensato ai websocket ma non sono riuscito a trovare molte fonti/guide...almeno il lato client sembra facilissimo da implementare ma il lato server non saprei proprio come impostarlo!
Guarda alla fine è solo un programma che sto facendo a tempo perso, inoltre ormai quasi tutti i moderni browser hanno il suporto alle websocket quindi se mi fornisci una documentazione x l'implementazione in php potrei anke provare...

X quanto riguarda l'altro metodo ho realizzato questo script x il download:
codice:
<?php
// definisco una variabile con il percorso alla cartella
// in cui sono archiviati i file
$dir = "files/";

// Recupero il nome del file dalla querystring
// e lo accodo al percorso della cartella del download
$file = $dir . $_GET['filename'];

// verifico che il file esista
if(!file)
{
  // se non esiste chiudo e stampo un errore
  die("Il file non esiste!");
}else{
  // Se il file esiste...
  // Imposto gli header della pagina per forzare il download del file
  header("Cache-Control: public");
  header("Content-Description: File Transfer");
  header("Content-Disposition: attachment; filename= " . $file);
  header("Content-Transfer-Encoding: binary");
  // Leggo il contenuto del file
  readfile($file);
}
?>
Se dopo l'ultima riga metto un delete file secondo te può funzionare? O corro il rischio ke l'altro client si ritrovi un file troncato?