我可以使用Akka I/O連接到ServerSocket
,但是當我關閉套接字時,我沒有看到任何種類的ConnectionClosed
消息返回。Akka 2.2.3 TCP客戶端未報告ConnectionClosed
第一測試通過,但第二個不(與兩個2.2.3和2.3.0-RC2):
import org.specs2.mutable._
import java.net._
import akka.actor.{Actor, ActorRef, ActorSystem}
import akka.io._
import akka.testkit.TestActorRef
object System {
implicit val system = ActorSystem("SocketListenerTests")
}
import System._
class Listener extends Actor {
val manager = IO(Tcp)
private var _last: Any = null
def last = _last
def receive = {
case a: Any => _last = a
}
def connect(addr: InetSocketAddress) { manager ! Tcp.Connect(addr) }
}
class AkkaTcpTests extends Specification {
override def is = args(sequential = true)^super.is
val socket = new ServerSocket(0)
val addr = new InetSocketAddress("localhost", socket.getLocalPort)
def pause { Thread.sleep(200) }
val listener = TestActorRef[Listener].underlyingActor
"Akka TCP I/O" should {
"open connections" in {
listener.connect(addr)
pause
listener.last must beAnInstanceOf[Tcp.Connected]
}
"notify when server sockets are closed" in {
socket.close
pause
listener.last must beAnInstanceOf[Tcp.ConnectionClosed]
}
}
}
[錯誤]「連接(本地主機/ 127.0.0.1:59141 ,/ 127.0.0.1:54809)'不是'akka.io.Tcp $ ConnectionClosed'的實例(AkkaTcpTests.scala:46)
感謝您的任何幫助。