2016-08-20 4 views
0

오디오 파일을 검색 할 수 있도록 간단한 REST 서비스를 만들려고합니다 (검색 지원 포함). https://github.com/aruld/jersey-streaming/tree/jersey2Spark java 서빙 mp3 파일 (검색시 동적)

이것은 매우 간단한 예, 그것은 GET과 브라우저에서 사용 HEAD 요청의 범위 헤더를 찾아 206 플러스 아카이브로 응답 수신 : 나는 뉴저지에 기반이 예제를 사용하고 있습니다 요청 된 슬라이스 (바이트 범위 포함). 여기서 catch는 spark java (임베디드 jetty 서버가있는 작은 프레임 워크)에서이 글을 다시 쓰고 있다는 것입니다.

모든 것이 괜찮은 것 같습니다. 브라우저는 GET을 전송하고 서버는 이에 따라 응답을 생성합니다 ... 플레이어는 아무것도로드하거나 재생하지 않습니다. 요청이 만들어 응답 헤더 완벽하다 :

요청 :

Host: localhost:4567 
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0 
Accept: audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5 
Accept-Language: en-US,en;q=0.5 
Range: bytes=0- 
Connection: keep-alive 

응답 : 내가 발견

Accept-Ranges: bytes 
Content-Length: 1048577 
Content-Range: bytes 0-1048576/5563904 
Content-Type: audio/mp3 
Date: Sat, 20 Aug 2016 05:41:23 GMT 
Last-Modified: Sat Aug 20 01:12:37 BRT 2016 
Server: Jetty(9.3.6.v20151106) 
sasd 

한 가지가이 요청에 대한 전송이 결코 끝나지 것입니다. 서버를 닫으면 전송은 0,03KB (항상)로 끝납니다. 개념 응용 프로그램 코드의

내 증거는 : http://pastebin.com/xjkLne7E

답변

0

답변 발견! 는 좀 더 많은 연구를했고 그것이 점화 기능이 구현된다는 것을 발견 : 여기에 이미 성공 등의 기능을 구현하기 위해 노력 tchoulihan https://github.com/perwendel/spark/issues/397

사용자가 :

여기 https://github.com/tchoulihan/torrenttunes-client

은 샘플입니다

https://github.com/tchoulihan/torrenttunes-client/blob/master/src/main/java/com/torrenttunes/client/webservice/Platform.java#L555

나는 방울을 붙여 넣을 수 없습니다 : 업로드를 처리하는 스파크 GET 요청 여기 GPLv3은 cc-wiki 라이센스와 충돌합니다. Hes 작업은 내가 처음 발견 한 것과 동일한 리소스에서 영감을 얻었습니다. 그것을 바탕으로 안드로이드, 모질라 및 크롬에서 작동하는 내 자신의 버전을 코딩했습니다.

TL; DR 문제는 mozilla가 206 요청을 제대로 이해하지 못하고 ByteOutputStream을 닫고 플러시하지 않는 것이 문제였습니다. 또한 간단한 원시 HTTP 응답을 보내는 대신 JAX의 StreamingOutput을 응답으로 사용하려고했습니다.