0
私はTcpクライアントサーバーを作成しています。 サーバーアクターが作成されます。コンストラクタでは、IPとランダムポートにバインドします。Akka Tcpバインドメッセージの使用
私はサーバアクタに通信を開始するための初期メッセージを送信します。 ただし、この最初のメッセージが受信される前に、サーバのアクタはBoundメッセージを受信します。
サーバが最初のメッセージを受信する前にバウンドメッセージを受信する方法はありますか? サーバーのコンストラクタコード
ServerActor extends Actor with ActorLogging
{
var myAddress:InetSocketAddress = new InetSocketAddress(hostName,0)
val options:List[akka.io.Inet.SocketOption] = List():::List(Tcp.SO.ReuseAddress(true)):::List(Tcp.SO.ReceiveBufferSize(65535))
manager ! Bind(self, myAddress,1,options)
def receive = {
case b @ Bound(addr) => println(addr)
myAddress = addr
case c @ Connected(remoteAddress,localAddress) =>
log.info("Client Connected. Remote: {} Local: {}", remoteAddress, localAddress)
remoteConnection = sender()
remoteConnection ! Register(self)
case CommandFailed(_: Bind) =>
log.error("Binding Command Failed. Exiting.")
context stop self
case mRegisterMessage: RegisterMessage =>
{
//create register response and send it back
val mRegisterResponseMessage = new RegisterResponseMessage(true, "IPv4", myAddress.getHostString, myAddress.getPort)
sender() ! RegisterResponseMessage
}
}
}