根据Play framework documentation,我们可以选择覆盖postStop
方法,但它没有ActorRef
。我需要ActorRef
,因为我使用ActorRef
作为HashMap
中的标识符,其中包含连接客户端的actor的映射:断开连接时,我想从{{1}中删除该映射}}
编辑: -
这里HashMap
用作身份验证池。来自客户端的第一条消息用于身份验证,在验证时,ActorRef的实例被添加到HashMap
。在以下事件/消息中,通过检查HashMap
中是否存在ActorRef
来验证授权,请查看以下代码: -
HashMap
答案 0 :(得分:0)
我的愚蠢。
实际上,ActorRef已经在我的自定义Actor实现中提供了,我可以使用它。
class MyWebSocketActor(sh: HandleSocket, out: ActorRef) extends Actor {
def receive = {
case msg: String => {
Json.fromJson[SocketParsedMessage](Json.parse(msg)) match {
case s: JsSuccess[SocketParsedMessage] => {
sh.HandleSocketMessages(out, s.get)
}
case _: JsError => {
out ! PoisonPill
}
}
// println(parsedMsg)
// out ! (msg)
}
}
override def postStop(): Unit = {
// super.postStop()
sh.clientDisconnected(out)
}
}