Pergunta

Eu estou usando uma WebSocket ponto final expostos por meu Play Framework controlador.Meu cliente será, no entanto, enviar uma grande matriz de bytes e eu estou um pouco confuso sobre como lidar com isso no meu Iteratee.Aqui está o que eu tenho:

def myWSEndPoint(f:String => String) = WebSocket.assíncrono[Matriz[Byte]] { pedido =>

  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)
  }

}

Como pode ser visto no código acima, eu estou preso na linha sobre como lidar com a matriz de Bytes como um pedido e envia a resposta de volta como uma Seqüência de caracteres?A minha confusão é o Iteratee.foreach chamada.É este foreach um foreach na matriz de bytes ou de todo o conteúdo do pedido que eu enviar, como uma matriz de bytes do meu cliente?É confuso!

Alguma sugestão?

Foi útil?

Solução

Bem...Isso depende.É o seu cliente o envio de todos os binários de uma só vez, ou é (explicitamente) bloco por bloco?

-> Se tudo de uma vez, então tudo vai ser na primeira parte (pois, por um websocket?Por um Iteratee?Ações com BodyParser provavelmente será mais eficiente para que).

-> Se é pedaço por pedaço, você tem que manter todos os pedaços que você recebe, e concatená-los em fechar (close, a menos que você tem uma outra maneira para o cliente para dizer:"Ei, eu estou feito!").

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top