2016-06-27 17 views
0

Gibt es eine effizientere Möglichkeit, Audiodateien mit SpringBoot zu senden?Audiodateien mit Spring Boot bereitstellen

@RequestMapping(value = '/getSong/{id}', method = RequestMethod.GET) 
def getMusic(HttpServletResponse response, @PathVariable Integer id) throws Exception { 
    Music m = shuffler.findTrackPathById(id) 
    if (m == null) { 
     return "File not found" 
    } 
    response.setContentType("audio/mpg") 
    response.setHeader("Content-disposition", "inline; filename=" + m.getFilename()) 
    InputStream is = new FileInputStream(m.getFullpath()) 
    FileCopyUtils.copy(is, response.getOutputStream()) 
    response.getOutputStream().close() 
} 

ich diesen Fehler erlebe jeder einmal in eine Weile: sofort

2016-06-26 08:47:16.460 INFO 10831 --- [  Thread-11] o.e.jetty.server.handler.ContextHandler : Stopped [email protected]{/,file:/private/var/folders/73/gwl8bs6s4hgcl6vyln6_wzsc0000gn/T/jetty-docbase.7966202443679651433.8080/,UNAVAILABLE} 
2016-06-26 08:47:46.463 WARN 10831 --- [  Thread-11] o.e.jetty.util.thread.QueuedThreadPool : qtp1041326823{STOPPING,8<=8<=200,i=0,q=1} Couldn't stop Thread[qtp1041326823-19,5,main] 

Die HTTP-Anforderung aus einer Schräg-App nicht die Datei herunterladen (die Geschwindigkeit ~ 200Kb/s) - obwohl ich auf meinem lokalen Rechner teste. Wenn ich curl benutze oder es von der Adressleiste herunterlade, wird es jedoch sofort heruntergeladen.

+0

Der letzte Absatz beweist ziemlich genau, dass es sich um ein clientseitiges Problem handelt, aber Sie scheinen davon auszugehen, dass es sich um ein serverseitiges Problem handelt. – kryger

+0

Ja, wenn ich den Server beende - kann ich die Warnung '' Kann Thread nicht stoppen'' sehen. Ich kann im Aktivitätsmonitor sehen, dass ein Java-Prozess hängt, den ich manuell beenden muss. – maslick

+0

@kryger Ich benutze ngAudio auf dem Frontend und es funktioniert gut http://danielstern.github.io/ngAudio/#/docs - so könnte dies das langsame Laden verursachen. Aber warum wirft Spring den '' Konnte Thread nicht stoppen' 'dann? Ich denke, es ist sowieso ein serverseitiges Problem. Eine Sache, die ich vielleicht übersehen habe, was ist, wenn der Client trennt, bevor der Server die Datei geliefert hat? – maslick

Antwort

0

Das Problem ist, dass ich Audio-Dateien im selben Thread wie andere Ressourcen (GET, POST).