我正在开发一个正在运行的 Web-socket 应用程序,并根据他们的官方教程 ( https://www.playframework.com/documentation/2.8.x/JavaWebSockets ) 使用基于 Actor 的 Websocket 实现
在 Controller 中
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 和经典 API 的更多文档:https://doc.akka.io/docs/akka/current/typed/coexisting.html
关于java - Akka Typed actor in play websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59695879/