아래 코드는 클라이언트로 스트리밍됩니다. 내가 수집 한 것은 Java의 IO 스트림을 사용하는 것보다 더 관용적 인 방법입니다. 그러나 스트림에는 스트림이 완료된 후에도 연결이 유지됩니다.Play2 Framework 프록시 스트리밍 콘텐츠가 클라이언트에 스트리밍이 끝난 후 연결을 유지합니다.
def getImage() = Action { request =>
val imageUrl = "http://hereandthere.com/someimageurl.png"
Ok.stream({ content: Iteratee[Array[Byte], Unit] =>
WS.url(imageUrl).withHeaders("Accept"->"image/png").get { response => content }
return
}).withHeaders("Content-Type"->"image/png")
}
이것은 내부 API에서 요청자로 큰 파일 (> 1MB)을 스트리밍하기위한 것입니다.
질문은 왜 연결을 유지합니까? 업스트림 서버에서 기대할 수있는 것이 있습니까? 나는 업스트림 서버를 컬 (curl)을 사용하여 테스트했으며 연결은 닫히지 않습니다.이 프록시를 통과 할 때 닫히지 않습니다.
위대한! 나는 Ok.stream이 Ok.chunk가되어 Play 2.2.0에서 이것을 다시 고치기 위해 무언가를 게시 할 것입니다. –