[OK]をここで何か危険にさらします。
免責事項:下記に記載されている内容にもかかわらず、start hereがあります。
私はスカラに精通していませんが、Erlangと同様の原則を使用しています。あなたの質問について私を混乱させる事は、これとはほとんど関係がありません。しかし、あなたが確立しているように見えるクライアントとサーバーの関係がもっとあります。
サーバーは、要求を受信しない限り、クライアントにメッセージを送信し続けることはありません。つまり、サーバーアクタークラスは、受信したメッセージをチェックしてそれに応じて動作するケースステートメントの周りに(必ずしもそうであるとは限りません)構築する必要があります。したがって、このコンテキストでは、クライアントは既存のものであり、クライアントはその要求を認識しただけなので、サーバーはそれを心配する必要はなく、代わりに通常は応答メッセージを送信する必要があります。
サーバーが依然としてクライアントにメッセージを送信しようとしている場合、これらのメッセージが閉じられているにもかかわらず、要求を受信しなくてもメッセージを送信しようとしているようです。これは、クライアントとサーバーの関係の中で根本的に間違っています。サーバーは要求に応じて反応する必要があります。それ以外の場合は、クライアントの役割を引き継いでいます。
いずれの場合でも、(とあなたはである必要があります)、クライアントとサーバーの会話の終わりを定義できます。これにより、リソースの解放と確立された接続の終了に役立ちます。その効果について:
あなたのクライアントの俳優は、サーバーに停止メッセージを送信すると、関数Scalaは俳優クラスのために実施しているものは何でも出るとその実行を終了する必要があります。
停止メッセージを受信すると、サーバのアクタはに応答しないでください。クライアントにが返されます。代わりにクリーンナップ(存在する場合)を実行し、クライアントアクタと同様に実行を終了する必要があります。
このようにして、関係するすべてのアクターの適切な終了と正しいリソースの解放を確実にします。
何とか助けてくれることを願っています。残念ながら私はスカラ自体に精通していません。さもなければ私はいくつかのコードを持ち込むことができますしかし、上記のリンクはうまくいけば助けになるはずです。
あなたは、俳優の特性のtrapExitメンバーを見ましたか?それはここに文書化されています:http://www.scala-lang。org/docu/files/actors-api/actors_api_guide_1.html – djondal