【问题标题】:How to serve static HTML file in Scala?如何在 Scala 中提供静态 HTML 文件?
【发布时间】:2019-09-28 03:58:18
【问题描述】:

我有一个 EchoServer,用于在我的计算机上运行和提供静态本地 HTML 文件。如果文件不存在,它将发出错误。我想知道如何在这段代码中提供本地文件路径?

我几乎是这门语言的新手,不知道它是如何工作的。

这是我尝试在其中运行服务器的主要课程。

def main(args: Array[String]) {
    val server = new ServerSocket(9999)
    while(true) {
      try {
        serve(server)
        //Maybe the filepath goes here?
      }catch {
        case e: Exception => ("File not found")
      }

    }
  }

虽然这两个是输入的内容

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()
  }

因此,如果我让它正常运行,它会读取任何现有的 HTML 文件,如果它在我的本地计算机上不存在,则不输出错误。

【问题讨论】:

  • 您可以打开一个 FileInputStream 到您的文件并将其从套接字流复制到out。但是这样是不是太低级了?你不想至少使用 HTTP 协议吗?
  • 我该怎么做呢?抱歉还是新手。
  • 你可以使用Files.copy,见stackoverflow.com/questions/4741419/…

标签: scala


【解决方案1】:

Echo 服务器相对简单,因为它运行在 ECHO 协议[1] 上。如果您需要提供静态文件,除非您想通过 TCP/UDP 实现自己的协议,否则我建议您使用 Scala 中任何可用的 Web 框架通过 HTTP(s) 来实现。

Scala 中有很多 web frameworks,其中大多数应该支持直接从 Web 服务器提供文件夹或静态文件。

使用 Scalatra 的一个简单示例是将要提供的文件放在 webapp 文件夹中并完成。你可以阅读更多关于它的信息here。如果您想对输入请求执行任何类型的验证,您还可以编写一个小型 API 来执行这些验证后的验证,从而通过网络传输文件。

[1] - https://www.rfc-editor.org/rfc/rfc862

【讨论】:

    猜你喜欢
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2021-12-09
    • 2015-11-03
    相关资源
    最近更新 更多