Cannot use a method returning play.mvc.WebSocket as a Handler for requests in Play?

為{幸葍}努か 提交于 2019-12-23 04:59:30

问题


GET    /status        controllers.Application.handleWebSocketConnection()

Here is the relevant source code.

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

here is my 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

I am using Play version 2.4.2 and all the source code is in java 8. I get the following error. I am not sure what is going with my routes and the controller. I followed the link here.

[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

any ideas?


回答1:


I don't have the rep needed to add a comment... so here we go:

I'm wondering if specifying the type of messages handled by your websocket would fix the problem, try:

public WebSocket<String> handleWebSocketConnection()

This is of course assuming your websocket is expecting Strings coming in from the browser as welle as send Strings back.



来源:https://stackoverflow.com/questions/42963476/cannot-use-a-method-returning-play-mvc-websocket-as-a-handler-for-requests-in-pl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!