2013-10-28 39 views
3

我在玩PlayFramework 2.2中的WebSockets。我想對初始請求進行一些檢查,並可能返回適當的HTTP狀態。原則上它看起來像這樣的事情,在this question問:PlayFramework Websocket HTTP狀態

def ws(username: String) = { 
    if (username == "asoliman") 
     Action { request => 
     Forbidden("Soliman is not allowed here") 
     } 
    else 
     WebSocket.using[String] { request => 
     val in = Iteratee.foreach[String](s => println("got: " + s)).mapDone(_ => println("Disconnected")) 
     val out = Enumerator[String]("Ahmed", "Mohamed", "Ibrahim").andThen(Enumerator.enumInput(Input.EOF)) 
     (in, out) 
     } 
    } 

如上所述,這是不可能的,因爲的WebSocket的usingasync需要返回Tuple2[Iteratee, Enumerator]

有沒有推薦的方法呢? 或者,有沒有辦法發送Websocket's Status Codes

回答

1

UPDATE 2015年10月7日:

在較新的版本PlayFramework,有可能拒絕連接,因此返回,說,禁止狀態。這裏檢查文檔:https://www.playframework.com/documentation/2.4.x/ScalaWebSockets

原來的答案:

答案是,它是不可能在與PlayFramework 2.2的時刻。常規的HTTP狀態不可行,因爲響應需要是WebSocket(通過使用/ async),並且WebSocket狀態未實現。我在他們的回購中提出了一個關於它的問題,我們需要等待未來的發佈 - 或者有助於實現它:-)

+0

在「PlayFramework 2.3或PlayFramework 2.4」中實現了websocket狀態代碼嗎?如何在Web套接字響應中返回響應代碼? – SKK

+0

我不知道這是你在找什麼,但有一種方法可以在與演員一起使用時拒絕websocket連接:請參閱https://www.playframework.com/documentation/2.4.x/ScalaWebSockets – ticofab