我有一个场景,我有一堆 Akka Actor 运行,每个 Actor 代表一个 IoT 设备。我有一个基于 Play 的 Web 应用程序,这些 Actor 在其中运行并连接到这些 IoT 设备。
现在我想通过 WebSocket 端点将来自 Actor 的信号暴露给外界。每个 Actor 都有某种机制,我可以使用它来询问最新的信号状态。
我的想法是执行以下操作:
在我的控制器中添加一个 WebSocket 端点,该端点需要它需要信号的 IoT 设备的 ID。在这个控制器中,我将执行一个actor选择来获取与传入的 IoT 设备的 id 对应的 Actor 实例。
使用步骤 1 中获取的 ActorRef 并实例化 WebSocketActor
在这个 WebSocketActor 中,我将实例化一个 Monix Observable,它将定期使用 actorRef 并要求它提供信号。
收到这些信号后,我会将其传递给 WebSocket 端点
现在我的问题是:
如果客户端打开了 WebSocket 流并且在一段时间后代表物联网设备的 Actor 死了,会发生什么。我可能应该在我的 WebSocketActor 中处理这种情况。但是这会是什么样子呢?
如果代表物联网设备的 Actor 重新活跃起来(假设我设置了一些监督),我可以继续处理在 Actor 死亡之前打开套接字连接的客户端吗?我的意思是客户端是否需要以某种方式关闭并再次打开连接?
请建议?