播放 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
我正在开发一个 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