Play Framework 및 Scala의 새로운 기능입니다. 나는 재생중인 웹 소켓을 사용하여 파일 업로드를 작성하려고했습니다. 나는 그것이 ByteString
을 사용하여 끝날 수 있다고 알았습니다. 그러나 직면하고있는 문제는 응답 메시지를 으로 유지할 수 없다는 것입니다.ByteString 및 String in String을 처리 할 Websocket 2.5
def upload = WebSocket.accept[ByteString, String] { request =>
ActorFlow.actorRef(out => UploadActor.props(out))
}
예외는 다음과 점점 오전
,
play.sbt.PlayExceptions$CompilationException: Compilation error[could not find implicit value for parameter transformer: play.api.mvc.WebSocket.MessageFlowTransformer[akka.util.ByteString,String]]
at play.sbt.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27)
at play.sbt.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27)
at scala.Option.map(Option.scala:145)
at play.sbt.run.PlayReload$$anonfun$taskFailureHandler$1.apply(PlayReload.scala:49)
at play.sbt.run.PlayReload$$anonfun$taskFailureHandler$1.apply(PlayReload.scala:44)
at scala.Option.map(Option.scala:145)
at play.sbt.run.PlayReload$.taskFailureHandler(PlayReload.scala:44)
at play.sbt.run.PlayReload$.compileFailure(PlayReload.scala:40)
at play.sbt.run.PlayReload$$anonfun$compile$1.apply(PlayReload.scala:17)
at play.sbt.run.PlayReload$$anonfun$compile$1.apply(PlayReload.scala:17)
웹 소켓은 다음과 같다 처리하는 배우,
이 이class UploadActor(out: ActorRef) extends Actor{
out ! "Hello"
def receive = {
case msg: ByteString => {
val p = new PrintWriter(new File("/tmp/newFile.mp4"))
p.print(msg.asByteBuffer)
p.flush()
out ! "file received"
}
case msg: String => out ! ("Got it "+ msg)
}
}
컨트롤러에 주어진 코드를 넣었지만 여전히 같은 예외입니다. – vinnu313