基本Play框架路由和Web套接字示例

Dav*_*ski 7 scala websocket playframework playframework-2.0

我正在尝试学习如何在Play 2.1中使用Web套接字,并且我无法使用Web套接字URL来使用我的应用程序的路由配置.我开始使用新的Play应用程序和websockets上Play框架文档.

这是我的conf/routes:

# Home page
GET   /               controllers.Application.index

# Websocket test site
GET   /wstest         controllers.Application.wstest
Run Code Online (Sandbox Code Playgroud)

然后我将该wstest函数添加到我的控制器类:

object Application extends Controller {

  def index = Action {
    Ok(views.html.index("Websocket Test"))
  }

  def wstest = WebSocket.using[String] { request =>
    // Log events to the console
    val in = Iteratee.foreach[String](println).mapDone { _ =>
      Logger.info("Disconnected")
    }

    // Send a single 'Hello!' message
    val out = Enumerator("Hello!")

    (in, out)
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,到目前为止,我只能用URL访问的WebSocket ws://localhost:9000/wstest (使用示例代码在websocket.org/echo.html).我正在查看sample/scala/websocket-chatPlay框架附带的应用程序,它使用路由配置文件来引用websocket,如下所示:

var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket
var chatSocket = new WS("@routes.Application.chat(username).webSocketURL()")
Run Code Online (Sandbox Code Playgroud)

我尝试用@routes.Application.wstest.webSocketURL()和替换我的websocket URL @routes.Application.wstest.第一个不编译.第二个编译,但客户端和服务器不交换任何消息.

如何使用Play路由配置访问此websocket?我在这做错了什么?


编辑

这是我的编译错误的屏幕截图,"在这里找不到任何HTTP请求标头":

编译错误

Mar*_*ier 6

没有编译器错误,很难猜出可能是什么问题.

由于隐式请求,您必须使用parens,即@routes.Application.wstest().webSocketURL(),或者您在webSocketURL调用所需的范围内没有隐式请求.