带有Scala参与者的客户机-服务器示例

带有Scala参与者的客户机-服务器示例,scala,actor,Scala,Actor,实现以下示例的最佳方法是什么 参与者服务器接收请求, 处理它们,创建新的响应 对于每个请求,发送响应 发送至请求发件人 参与者客户端发送请求和 接收响应 所有这些通信都是异步的,因此它使用react 这只是一个例子,因此它不应该处理所有这些情况,如服务器关闭,客户端卡住等。它应该简洁而富有表现力 import scala.actors._ import Actor._ case class SendRequest(rid: String) case class Request(rid: S

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

  • 参与者
    服务器
    接收
    请求
    , 处理它们,创建新的
    响应
    对于每个
    请求
    ,发送
    响应
    发送至
    请求
    发件人

  • 参与者
    客户端
    发送
    请求
    和 接收
    响应

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

这只是一个例子,因此它不应该处理所有这些情况,如
服务器
关闭,
客户端
卡住等。它应该简洁而富有表现力

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))
      }
   }
}
用法:

scala> client ! SendRequest("Hello!")
Server got request [Hello!] from client
Client got response [Hello!] from server
关于:

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

使用
receive
的参与者也是异步的。他们只是阻塞线程,等待新消息