Pour l'apprentissage j'essaie d'implémenter une application de jeu simple qui obtient des données d'un acteur distant. Le code pour l'acteur est le suivant:Jouer cadre 2.0 - deadLetters au lieu d'un acteur
import akka.actor.{Props, ActorSystem, Actor}
class NumbersServer extends Actor {
var number = 0
protected def receive = {
case 'next => {
number += 1
number
}
case 'reset => number = 0
case 'exit => context.stop(self)
case 'get => sender ! number
}
}
object Server {
def main(args: Array[String]) {
val system = ActorSystem("ServerSystem")
val server = system.actorOf(Props[NumbersServer], "server")
}
}
Je l'empaquette dans un pot et le lance à partir de la ligne de commande. Si j'essaye d'envoyer des messages à cet acteur à partir d'une console Scala ouverte à partir d'une autre fenêtre, tout fonctionne correctement. Maintenant, je veux obtenir l'acteur de la structure de jeu. Dans l'objet Application
je définir la méthode suivante:
def numbers = Action {
Ok(views.html.numbers(Client.actor.path.name))
}
Puis dans le package models
I définir l'objet du client:
object Client {
import play.api.Play.current
val actor = Akka.system.actorFor("akka://[email protected]:2552/user/server")
}
Le fichier numbers.html.scala
:
@(message: String)
@main("Header") {
<h1>@message</h1>
}
donc je pense que quand je vais à 127.0.0.1:9000/numbers
, je voudrais obtenir une page avec le chemin de l'acteur serveur. Au lieu de cela, je reçois <h1>deadLetters</h1>
. Qu'est-ce que je fais de mal et comment cela devrait-il être fait correctement?
Avez-vous avez activé l'accès distant aux deux extrémités? –
@ViktorKlang: J'ai essayé d'activer le remoting dans le jeu d'une manière analogue à l'akka simple, mais il n'y a pas de paquet akka-remote, donc je viens d'avoir 'java.lang.ClassNotFoundException: akka.remote.RemoteActorRefProvider' et je ne sais pas quoi d'autre faire. –
Akka docs sont plutôt bons: http://doc.akka.io/docs/akka/2.0/scala/remoting.html –