代码中的配置
Ktor 允许你直接在代码中配置各种服务器形参,包括主机地址、端口、
使用 embeddedServer 时,你可以通过将所需的形参直接传递给该函数来配置服务器。 embeddedServer 函数接受不同的形参来配置服务器,包括一个
在本节中,我们将介绍运行 embeddedServer 的几个不同示例,展示如何配置服务器以满足你的需求。
基本配置
下面的代码片段展示了一个使用 Netty 引擎和 8080 端口的基本服务器设置。
请注意,你可以将 port 形参设置为 0,以便在随机端口上运行服务器。 embeddedServer 函数会返回一个引擎实例,因此你可以在代码中使用 ApplicationEngine.resolvedConnectors 函数获取端口值。
引擎配置
embeddedServer 函数允许你使用 configure 形参传递引擎特有的选项。此形参包含所有引擎共有的选项,并由 ApplicationEngine.Configuration 类公开。
以下示例展示了如何使用 Netty 引擎配置服务器。在 configure 代码块中,我们定义了一个 connector 来指定主机和端口,并自定义各种服务器形参:
connectors.add() 方法定义了一个连接器,其中包含指定的主机(127.0.0.1) 和端口(8080)。
除了这些选项,你还可以配置其他引擎特有的属性。
Jetty
Jetty 特有的选项由 JettyApplicationEngineBase.Configuration 类公开。
你可以在 configureServer 代码块内配置 Jetty 服务器,该代码块提供对 Server 实例的访问。
使用 idleTimeout 属性指定连接在关闭前可以空闲的时长。
自定义环境
以下示例展示了如何使用由 ApplicationEngine.Configuration 类表示的自定义配置来运行具有多个连接器端点的服务器。
有关完整示例,请参见 embedded-server-multiple-connectors 。
TIP
你还可以使用自定义环境来 提供 HTTPS 服务 。
命令行配置
Ktor 允许你使用命令行实参动态配置 embeddedServer。这 在需要运行时指定端口、主机或超时等配置的情况下特别有用。
为此,请使用 CommandLineConfig 类将命令行实参解析为配置对象,并在配置代码块中传递它:
在此示例中,Application.Configuration 中的 takeFrom() 函数用于覆盖引擎配置值,例如 port 和 host。 loadCommonConfiguration() 函数从根环境(例如超时)加载配置。
要运行服务器,请按以下方式指定实参:
TIP
对于静态配置,你可以使用配置文件或环境变量。 要了解更多信息,请参见 文件中的配置 。