scala - 如何实现我当前的 Scala 服务器以使用 Akka 并发?
问题描述
我目前有一个 Scala 回显服务器,如何在代码中实现 Akka,以便它可以提供我已经实现的 HTML 文件?
甚至不知道如何开始解决这个问题,我是否必须导入类似 Akka 的东西?或者改变我的依赖?所以我不使用导入 Java 和 Scala 而是将其更改为 Akka 吗?
我的回声服务器
import java.net._
import java.io._
import scala.concurrent.{ExecutionContext, Future}
import scala.util.control.Breaks
object EchoServer {
def read_and_write(in: BufferedReader, out: BufferedWriter): Unit = {
out.write(in.readLine())
out.flush()
in.close()
out.close()
}
def serve(server: ServerSocket): Unit = {
val s = server.accept()
val in = new BufferedReader(new InputStreamReader(s.getInputStream))
val out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream))
read_and_write(in, out)
s.close()
}
def getListOfFiles(dir: String): List[File] = {
val file = new File(dir)
if (file.exists && file.isDirectory) {
file.listFiles.filter(_.isFile).toList
} else {
List[File]()
}
}
def main(args: Array[String]) {
val server = new ServerSocket(9999)
var readString = "C:\\Users\\Desktop\\EchoServer\\src\\main\\htmlFiles"
println("What file are you looking for with extension?")
implicit val ec = ExecutionContext.global
while (true) {
Future {
implicit val ec = ExecutionContext.global
val userInput = scala.io.StdIn.readLine()
val result = getListOfFiles(readString)
val loop = new Breaks
try {
result.foreach { file =>
if (file.getName.endsWith(".html") == (userInput.endsWith(".html"))) {
if (file.getName.equals(userInput)) {
println(file.getName + " file found")
}
else {
println("file not found")
}
}
}
}
catch {
case e: FileNotFoundException => println("Couldn't find that file.")
}
serve(server)
}
}
}
}
我已经实现了期货,甚至不确定它是否正确地提供 HTML 文件。我如何将其更改为 akka 并发?
解决方案
推荐阅读
- android - react-native-cli - 无法运行 android 项目
- android - 这个问题的答案是什么
- r - 如何更改 ggplot 中 geom_line() 中线条的颜色顺序
- c++ - 如何正确调整 QGraphicsView 的大小?
- wordpress - 如何更改 WooCommerce 单品页面样式
- php - 使用 curl 发送请求时出现问题
- react-native - 如何将图像的高度设置为弹性高度
- spring - 如何以编程方式检查 tomcat 是否对请求进行了身份验证?
- python -
对象和 xslxwriter 错误 - raspberry-pi3 - 树莓派的绘图电路