在我的应用程序中,我有经典的演员系统和一个typedGuardian(使用akka类型)。
implicit val system = akka.actor.ActorSystem("my-classic-actor-system")
implicit val typedGuardian: ActorRef[Any] =
system.spawn(HttpWebsocketServer(), "HttpServer")
Poly.startProcessor(?????) // pass in WebSocketIn here which is a typed actor
我的akka类型的设置从下面的actor开始,我需要以某种方式将客户端webSockedIn akka类型的actor作为参数传递给我的Poly.startProcessor经典actor。我需要这样做是因为我需要将消息从这个里面发送到webSocketIn,这样我就可以在我的HttpWebsocketServer里面处理这些消息。
HttpWebsocketServer:
def apply(): Behavior[Any] = {
Behaviors.setup[Any] { context =>
implicit val ec: ExecutionContext = context.executionContext
val system = context.system
val webSockedIn = context.spawn(websock.WebSocketIn(), "WebSocketIn")
我需要以某种方式将webSockedIn传递给Poly。startProcessor:
object Poly {
def startProcessor()(implicit system: akka.actor.ClassicActorSystemProvider): Unit = {
有没有可能一个经典的演员系统得到一个akka类型的演员的引用,并发送消息太它?
如果是这样,我应该在哪里产生我的websocketClientIn,这样这将是可能的?
1条答案
按热度按时间vq8itlhq1#
假设您控制了
Poly
中的实现,则可以让startProcessor
通过system.actorSelection("/user/HttpServer")
解析typedGuardian
/HttpWebsocketServer
执行元。这样,您就可以让
HttpServer
回答websockedIn
的查询消息(例如,通过ask模式)。比如说
第一个
因此,
websockedInFut
的未来与由HttpWebsocketServer
产生的webSockedIn
一起完成。