带有Akka的Scala上带有SSL的TCP套接字

带有Akka的Scala上带有SSL的TCP套接字,scala,sockets,ssl,tcp,akka,Scala,Sockets,Ssl,Tcp,Akka,使用Scala 2.10和Akka 2.3.4,我构建了一个简单的代理服务器,它接受传入的TCP连接,然后将这些消息代理到远程服务器。使用纯文本时一切正常,但我仍然坚持使用SSL 简单地说,这就是我为传入连接启动非安全服务器的方式: val server = system.actorOf(Props(new LegacyTCPServer), name = "my-tcp-server") implicit val bindingTimeout = Timeout(1.second) impo

使用Scala 2.10和Akka 2.3.4,我构建了一个简单的代理服务器,它接受传入的TCP连接,然后将这些消息代理到远程服务器。使用纯文本时一切正常,但我仍然坚持使用SSL

简单地说,这就是我为传入连接启动非安全服务器的方式:

val server = system.actorOf(Props(new LegacyTCPServer), name = "my-tcp-server")

implicit val bindingTimeout = Timeout(1.second)
import system.dispatcher // execution context for the future

val boundFuture = IO(Tcp) ? Tcp.Bind(server, endpoint)

boundFuture.onSuccess { case Tcp.Bound(address) =>
  println("Fantastic! We have a connection: " + address)
}
我可以通过telnet连接到此服务器,但现在我想将no移到opensl。我想一定有一些配置选项,但我似乎无法从文档中解析它:

我见过一些使用akka 2.2.x的(非功能性)示例,它们使用TCPPipelineHandler,例如

但是TCPPipelineHandler在akka 2.3.x中似乎不存在,所以感觉像是死胡同

如果有人能举例说明如何使用当前版本的Scala和Akka通过ssl设置tcp套接字,我会非常高兴


如果您想了解更多信息,请告诉我。谢谢

spray是构建在Akka IO之上的HTTP服务器/客户端

“io.spray”%“spray io”%“1.3.1”
软件包中有一个和SSLTL支持。我在一个项目中使用它,我目前正在进行。有关更多详细信息,请参阅如何在spray中为HttpServerConnection配置它

您需要重构代码以使用spray的管道,根据我的经验,如果您将代码分为多个阶段,每个阶段负责一小段,代码就会变得容易得多