Play Framework WebSocket Async.
-
21-12-2019 - |
문제
Play 프레임 워크 컨트롤러가 노출 된 WebSocket 끝점을 사용하고 있습니다.그러나 내 고객은 대규모 바이트 배열을 보냅니다. 나는이 요테터에서 이것을 처리하는 방법에 대해 조금 혼란 스럽습니다.여기있는 것입니다 :
def myWSEndPoint (f : string=> string)= websocket.async [배열 [바이트]] { 요청=>
Akka.future {
val (out, chan) = Concurrent.broadcast[Array[Byte]]
val in: Iteratee[Array[Byte], Unit] = Iteratee.foreach[Array[Byte]] {
// How do I get the entire file?
}
(null, null)
}
.
}
위의 코드에서 볼 수 있으므로 바이트 배열을 하나의 요청으로 처리하고 응답을 문자열로 보내는 방법에 대해 줄에 멈췄습니까?내 혼란은 itererate.foreach 전화에 있습니다.이것은 바이트 배열에 대한 위조 또는 내 클라이언트에서 바이트 배열로 보내는 요청의 전체 내용을 위조합니까?혼란 스럽습니다!
모든 제안?
해결책
잘 ... 그것은 의존합니다.고객이 한 번에 모든 바이너리를 보내거나 (명시 적으로) 청크로 청크입니까?
-> 한 번에 모두이면, 모든 것이 첫 번째 청크에있을 것입니다 (그러므로 웹 소켓이 왜 반복적 인 이유는 무엇입니까? bodyparser와의 행동이 더 효율적 일 것입니다).
-> 청크로 청크가있는 경우 모든 청크를 받아들이고 클라이언트가 말하기 위해 다른 방법이 없다면 닫기에 연결해야합니다. "이봐!"/ P>
제휴하지 않습니다 StackOverflow