2015-11-26 58 views
0

我在Scala中使用帶有WebSocket的Play Framework,並嘗試接受Actor。播放框架如何處理來自WebSocket的CloseEvent?

如果Web服務器關閉連接,客戶端可以通過onClose在JS這樣的觸摸這個:

websocket.onclose = function (evt) { onClose(evt) }; 
有關服務器端

可是什麼?

如果客戶端關閉瀏覽器,web服務器是否可以觸摸這個關閉事件?

+2

Websocket actor已停止。 – 757071

回答

1
def ws(userId: String) = 
WebSocket.tryAcceptWithActor[String, String](request⇒ 
    Future { 
    Right(out ⇒ Props(new WsActor(userId, out))) 
    }) 
class WsActor(val userId: String, val clientActor: ActorRef) extends Actor{ 
    override def receive: Receive = ??? 

    @throws[Exception](classOf[Exception]) 
    override def preStart(): Unit = { 

    } 
    //when client close 
    //will call it 
    @throws[Exception](classOf[Exception]) 
    override def postStop(): Unit = { 
    println("stop") 
    } 

} 
+0

你好。如何在postStop中獲取actorRef,因爲我使用actorRef作爲連接客戶端的HashMap中的標識符,並斷開連接,我想從HashMap中刪除條目。 –