java - Akka Typed actor in play websocket

标签 java websocket akka actor playframework-2.3

我正在开发一个正在运行的 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/

相关文章:

node.js - 使用Nginx作为nodejs的反向代理忽略websockets

scala - 创建 TestActorRef 导致 NullPointerException

java - 如何使用 SimpleDateFormat 解析字符串日期?

java - GUI 在调整大小或最小化之前不显示内容

reactjs - 与WebSocket react useState导致数组无法正确更新

scala - Akka 关闭 TCP actor

scala - 使用 Akka 测试套件从 ActorRef 获取底层 Actor

java - 使用 JavaPoet 生成注释代码

java - 无法将发布请求更改为放置请求

java - akka websocket with java,计算客户端数量,向客户端发送消息