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