2016-08-29 3 views
1

Ich arbeite an einem einfachen Projekt, das PhantomJS Prozesse starten und mit ihm über WebSockets kommunizieren könnte. Ich erklärte Manager Schauspieler und ws Aktion in meinem Controller:Nachricht von WebsocketAccepter Schauspieler geht in Deadletter mit Play 2.5

class Application @Inject()(implicit actorSystem: ActorSystem, materializer: Materializer) extends Controller { 

val manager = actorSystem.actorOf(Manager.props, "manager") 

def index = Action { 
    Ok(views.html.main()) 
} 

def socket = WebSocket.accept[String, String] { request => 
    ActorFlow.actorRef(out => WebSocketAccepter.props(out, manager)) 
} 

def start = Action { 
    manager ! "START" 
    Ok 
} 

-Manager Schauspieler einfach beginnt PhantomJS, die WS verbindet.

Alles funktioniert gut, ich habe von PhantomJS Öffnen Nachricht, aber nächstes würde Ich mag ein paar Informationen von Manager greifen und es zu PhantomJS zurück:

class WebSocketAccepter(out: ActorRef, manager: ActorRef) extends Actor with ActorLogging { 
    ... 
    def receive = { 
     case message: String => { 
      val json = Json.parse(message) 
      val messageType: String = (json \ "type").as[String] 

     messageType match { 
     case "OPEN" => { 
      (manager ? AskInfo).mapTo[RegInfo].map(info => { 
       out ! Json.toJson(info).toString() 
      }) 
     } 
    ... 
} 

Ich Manager Schauspieler als Argument übergeben, aber wenn ich fragen info es sagt:

a.a.RepointableActorRef - Message [models.AskInfo$] from Actor[akka://application/temp/$a] 
to Actor[akka://application/user/manager#-1822927709] was not delivered.  
[1] dead letters encountered. 

Es ist ein bisschen seltsam, Websocket Schauspieler geht unter Temp-Pfad. Was ist das Problem?

+0

Ihre' Manager' Schauspieler gelöste Problem stirbt. Sie können versuchen, die Konfiguration 'akka.actor.debug.lifecycle = on' für das Debug – vdebergue

+0

hinzuzufügen, es startet den Manager actor nicht direkt, aber so: asiStreamSupervisor - gestartet ([email protected]) aa LocalActorRefProvider $ Guardian - überwacht jetzt Actor [akka: // application/user/manager # -507796102] – cutoffurmind

Antwort

0

Das durch den Abschluss Anfahrvorgang Code von ManagerActor zu speziellen Kinderdarstellern haben vor dem Empfang `AskInfo`

Verwandte Themen