我正在开发一个网络套接字应用程序,并根据其官方教程(https://www.playframework.com/documentation/2.8.x/JavaWebSockets)使用基于actor的网络套接字实现
在控制器中
public WebSocket socket() {
System.out.println("socket connecton received");
return WebSocket.Text.accept(
request -> ActorFlow.actorRef(WebSocketActor::props, actorSystem, materializer));
}
WebSocketActor通过如下所示的Typed 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