我試圖學習如何使用網絡套接字在播放2.1,我無法獲得Web套接字URL與我的應用程序的路由配置工作。我從一個新的Play應用程序和Play framework documentation on websockets開始。基本的播放框架路由和網絡套接字示例
這裏是我的conf/routes
:
# Home page
GET / controllers.Application.index
# Websocket test site
GET /wstest controllers.Application.wstest
然後,我添加了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)
}
}
然而,到目前爲止,我只能用URL ws://localhost:9000/wstest
訪問的WebSocket(使用示例代碼websocket.org/echo.html)。我一直在尋找在sample/scala/websocket-chat
應用程序自帶的播放框架,它使用路由配置文件,以引用的WebSocket,就像這樣:
var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket
var chatSocket = new WS("@routes.Application.chat(username).webSocketURL()")
我試着用@routes.Application.wstest.webSocketURL()
和@routes.Application.wstest
更換我的WebSocket URL。第一個不編譯。第二個編譯,但客戶端和服務器不交換任何消息。
如何使用我的播放路由配置訪問此websocket?我在這裏做錯了什麼?
編輯
這裏是我的編譯錯誤的截圖,「不能在這裏找到任何請求頭」:
感謝您的提示。我添加了編譯錯誤的截圖。 –
是的,在這種情況下,模板中缺少隱式請求,只需使用'(隱式請求:RequestHeader)'添加另一個參數列表。 –