我正在尝试使用Play 2.0 websockets进行一个非常简单的概念验证。
以下是我现在正在做的事情:
- 在我的控制器中定义WebSocket:
def wsrequest = WebSocket.using[String] { request =>
// Send a single 'Hello!' message
val out = Enumerator("Hello!")
// Just consume and ignore the input
val in = Iteratee.consume[String]()
// tie the in and out values to each other
(in, out)
}
- 在我的路线文件中添加路线
GET /wsrequest controllers.Application.wsrequest
- 在我的index.scala.html中的javascript中使用以下内容:
var sock = new WS("@routes.Application.wsrequest().webSocketURL()")
然而,当我尝试编译这个时,我得到了一个错误:
[info] Compiling 5 Scala sources and 1 Java source to targetscala-2.9.1classes...
[error] targetscala-2.9.1src_managedmainviewshtmlindex.template.scala:32: Cannot find any HTTP Request Header here
[error] Error occurred in an application involving default arguments.
[error] var sock = new WS(""""),_display_(Seq[Any](/*11.33*/routes/*11.39*/.Application.wsrequest().webSocketURL())),format.raw/*11.78*/("""")
[error] ^
[error] one error found
我是不是少了一步?还是我在上面所做的事情上犯了错误?
您的模板需要一个隐式请求头,如下所示:
@(message: String)(implicit request: RequestHeader)