2017-03-22 6 views
0
GET /status  controllers.Application.handleWebSocketConnection() 

ここに関連するソースコードがあります。play.mvc.WebSocketをPlayのリクエストのハンドラとして返すメソッドを使用できませんか?

public WebSocket handleWebSocketConnection() { 
    return WebSocket.withActor(new F.Function<ActorRef, Props>() { 
     @Override 
     public Props apply(ActorRef actorRef) throws Throwable { 
      return UserActor.props(actorRef, ""); 
     } 
    }); 
} 

は、ここに私のbuild.sbt

import play.routes.compiler.InjectedRoutesGenerator 
import play.sbt.PlayScala 

name := "hello" 

version := "1.0" 

lazy val `dashboard` = (project in file(".")).enablePlugins(PlayScala) 

scalaVersion := "2.11.8" 

libraryDependencies ++= Seq(
    jdbc , 
    cache , 
    ws , 
    specs2 % Test, 
    "io.netty" % "netty-all" % "4.0.0" 
) 

unmanagedResourceDirectories in Test <+= baseDirectory (_ /"target/web/public/test") 

resolvers ++= Seq(
    "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases" 
) 

routesGenerator := InjectedRoutesGenerator 

fork in run := true 

私がプレイバージョン2.4.2を使用していますが、すべてのソースコードは、Java 8で、私は次のエラーを取得するです。私は私のルートとコントローラで何が起こっているのか分かりません。私はここでlinkに従った。

[error] /Users/hello/Documents/java/test_app/conf/routes:8: Cannot use a method returning play.mvc.WebSocket[?0] as a Handler for requests 

[error] GET /status  controllers.Application.handleWebSocketConnection()   

[error] /Users/hello/Documents/java/test_app/conf/routes:8: not enough arguments for method createInvoker: (implicit hif: play.core.routing.HandlerInvokerFactory[play.mvc.WebSocket[?0]])play.core.routing.HandlerInvoker[play.mvc.WebSocket[?0]]. 

[error] two errors found 


[error] (compile:compile) Compilation failed 

私は担当者がコメントを追加する必要はありません

答えて

1

...ので、ここで行く:

あなたのWebSocketによって処理されるメッセージのタイプを指定しても問題が解決するかどう私は思ったんだけど、試してみてください。

public WebSocket<String> handleWebSocketConnection() 

これは当然のことですが、あなたのwebsocketは、文字列をブラウザから送信し、文字列を送り返すのと同じようにしていると想定しています。

関連する問題