Scala actor的Client-Server示例

Mic*_*ael 7 scala actor

实现以下示例的最佳方法是什么?

  • Actor server接收Requests,处理它们,Response 为每个创建一个新的Request并将其发送ResponseRequest发送方.

  • 演员client发送Requests和接收Responses.

所有这些通信都是异步的,因此它使用react.

这只是一个例子,所以它不应该处理所有这些情况,如server下降,client卡住等.它应该只是简洁和富有表现力.

Vas*_*iuk 8

import scala.actors._
import Actor._

case class SendRequest(rid: String)
case class Request(rid: String)
case class Response(rid: String)

val server = actor {
   eventloop {
         case Request(rid) => 
            println("Server got request [%s] from client" format(rid))
        sender ! Response(rid)  
      }
   }   
}

val client = actor {
   eventloop {
         case SendRequest(rid) => server ! Request(rid)
         case Response(rid) => 
            println("Client got response [%s] from server" format(rid))
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

用法:

scala> client ! SendRequest("Hello!")
Server got request [Hello!] from client
Client got response [Hello!] from server
Run Code Online (Sandbox Code Playgroud)

关于:

所有这些通信都是异步的,因此它使用反应.

使用的Actor receive也是异步的.他们只是阻止线程,等待新消息.