Akka Actor 搜索和流媒体事件

Akka Actor Searching and Streaming Events

我有一个场景,我有一堆 Akka Actor 运行 每个 Actor 代表一个 IoT 设备。我有一个基于 Play 的 Web 应用程序,其中这些 Actors 运行 并连接到这些 IoT 设备。

现在我想通过 WebSocket 端点将来自那里的 Actor 的信号公开给外界。每个 Actor 都有某种机制,我可以通过它来询问最新的信号状态。

我的想法是:

  1. 在我的控制器中添加一个 WebSocket 端点,它需要它需要信号的 IoT 设备的 ID。在这个controller中,我会做一个actor选择,获取传入的IoT设备id对应的Actor实例。

  2. 使用第一步得到的ActorRef实例化WebSocketActor

  3. 在这个 WebSocketActor 中,我将实例化一个 Monix Observable,它将定期使用 actorRef 并向它请求信号。

  4. 一旦收到这些信号,我就会将其传递给 WebSocket 端点

现在我的问题是:

  1. 如果客户端打开了 WebSocket 流,一段时间后表示 IoT 设备的 Actor 失效,会发生什么情况。我可能应该在我的 WebSocketActor 中处理这种情况。但这会是什么样子呢?

  2. 如果代表 IoT 设备的 Actor 活着回来(假设我设置了一些监管),我可以继续处理在 Actor 死亡之前打开套接字连接的客户端吗?我的意思是客户端是否需要以某种方式关闭并再次打开连接?

请指教?

如果您想查看 Akka actors + Monix 集成示例,通过 WebSocket 进行通信,请查看 monix-sample 项目。

代码处理网络故障。如果您要在浏览器中加载该示例,请断开网络连接,一旦连接恢复,您就会看到它恢复。