【发布时间】:2014-11-29 12:42:15
【问题描述】:
我在我的 akka 演员中使用 scala-io,在我的情况下,我需要在官方文档 (http://doc.akka.io/docs/akka/snapshot/scala/io-tcp.html) 中发送请求并等待响应,我可以看到答案是异步的。
如何等待响应,我可以使用某种方式吗? (问)模式
class SocketClient(remoteAddress: InetSocketAddress, listener: ActorRef) extends Actor {
import Tcp._
import context.system
IO(Tcp) ! Connect(remoteAddress)
def receive = {
case CommandFailed(_: Connect) =>
listener ! ConnectFailure
context stop self
case Connected(remote, local) =>
listener ! ConnectSuccess
val connection = sender
connection ! Register(self)
context become {
case data: ByteString =>
connection ! Write(data)
case CommandFailed(w: Write) =>
Logger.error(s"Error during writing")
case Received(data) =>
listener ! data
case Disconnect =>
connection ! Close
case _: ConnectionClosed =>
Logger.error(s"Connection has been closed ${remoteAddress.getAddress}")
context stop self
}
}
}
我可以使用类似的东西吗:
connection ? Write(data)
【问题讨论】: