1
class HomeController @Inject (implicit actorSystem:ActorSystem, materializer :Materializer) extends Controller
{
case class sendMsg(msg:JsValue)
class MYWSACTOR(out:ActorRef,mainActor:ActorRef) extends Actor
{
def receive =
{
case msg : JsValue =>
mainActor ! sendMsg(msg)
case sendMsg(msg) =>
{
/* validation part */
out ! msg
}
}
}
}
val mainActor = actorSystem.actorOf(Props[MYWSACTOR],"mainActor")
def object MYWSACTOR
{
def props(out:ActorRef) = Props(new MYWSACTOR(out,mainActor))
}
def socket = WebSocket.accept[JsValue,JsValue]
{
request =>
ActorFlow.actorRef(out => MYWSACTOR.props(out))
}
私はAkkaとScalaを初めて使用しています。私はScalaとPlayフレームワーク2.5.3でAkkaを使ってチャットアプリケーションを作ろうとしています。私は公式のドキュメントから上記のコードを使用しました。私はちょうどクライアントからのメッセージが最初に検証され、その後返されるように別のアクター(上記のコードではmainActor)を作成したかったのです。しかし問題はmainActorがmsgを別のクラスのsendMsgに送ることができないことです。私は何が違うの時点で役者を作成しようとする場合にも、それは私に予期しない例外をコンパイルエラーを与える:暫定例外Akka WebSocketで別のアクタを作成できません
'有効ではありません、あなたは追加の引数を渡す必要があり' MYWSACTOR'が故に 'ヴァルMainActorの= actorSystem.actorOf(小道具が[MYWSACTOR]、 "MainActorの")、二つの引数を取り、あなたのコードをよくお読みください。 – liosedhel
私はここで混乱しています...午前は、ちょうど私がここに引数を渡す必要がMYWSACTORクラスの小道具を持つ俳優を作成するので?あなたが私を例として見せてくれれば助かります。 –
ドキュメントを読む:http://doc.akka.io/docs/akka/snapshot/scala/actors.html#Propsあなたの主な俳優は2のparamsを必要とします。しかし、それがヌルでなければ、誰がその主役になるのだろうと思っていますか? (definitelly not)。多分あなたはそれらの俳優のために2つの異なるクラスが必要です。 –