【问题标题】:How Play Framework handle CloseEvent from WebSocket?Play Framework 如何处理来自 WebSocket 的 CloseEvent?
【发布时间】:2015-11-26 21:27:28
【问题描述】:

我在 Scala 中使用带有 WebSocket 的 Play Framework,并尝试通过 Actor 接受。

如果Web服务器关闭连接,客户端可以通过JS中的onClose触摸这个:

websocket.onclose = function (evt) { onClose(evt) };

但是服务器端呢?

如果客户端关闭浏览器,Web服务器是否可以触摸到这个关闭事件?

【问题讨论】:

  • Websocket actor 已停止。

标签: javascript scala playframework


【解决方案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")
  }

}

【讨论】:

  • 你好。如何在 postStop 中获取 actorRef,因为我在已连接客户端的 HashMap 中使用 actorRef 作为标识符,并且在断开连接时我想从 HashMap 中删除该条目。
猜你喜欢
  • 2020-07-29
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多