播放 websocket 中的 Akka Typed actor

Akka Typed actor in play websocket

我正在开发一个 web-socket 应用程序,并根据他们的官方教程使用基于 actor 的 websocket 实现 (https://www.playframework.com/documentation/2.8.x/JavaWebSockets)

在控制器中

 public WebSocket socket() {
    System.out.println("socket connecton received");
    return WebSocket.Text.accept(
            request -> ActorFlow.actorRef(WebSocketActor::props, actorSystem, materializer));
}

WebSocketActor 是使用类型化的 actor 实现的,如下所示

public class WebSocketActor extends AbstractBehavior<String> {

但问题是它给我以下错误 不兼容的类型:ActorRef 不能转换为 ActorRef,似乎 ActorFlow.actorRef 只允许未类型化的 actor。

如何使用具有上述实现的类型化 Actor。

当类型化 API 缺失时(我认为 Play ActorFlow 就是这种情况),您可以使用 akka.actor.typed.javadsl.Adapter 将新的类型化 API 改编为经典 API,如下所示:Adapter.toClassic(typedActorRef)

更多关于类型化和经典 API 共存的文档:https://doc.akka.io/docs/akka/current/typed/coexisting.html