代码内配置
代码内配置
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
对于静态配置,您可以使用配置文件或环境变量。 要了解更多信息,请参阅 文件中的配置 。