如何获取 ktor 服务的服务器 IP/端口?

时间:2021-02-05 14:16:46

标签: ktor

我希望编写一个 Ktor 功能,该功能应该使用 DNS-SD/mDNS 在本地网络上宣布该服务。我希望能够在 ktor 应用程序启动时自动启动宣布,并在 ktor 应用程序停止时停止它。我已经编写了使用 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { let userInfo:[AnyHashable:Any] = notification.request.content.userInfo print("\(userInfo)") completionHandler([]) } ApplicationStarted 事件执行此操作的代码。此代码有效。

但是,除了读取配置之外,我找不到从 ktor 获取什么 IP 地址/端口的方法。

有没有办法监听/列出 ktor 当前使用的连接器?

1 个答案:

答案 0 :(得分:0)

您可以通过 connectors 实例访问 BaseApplicationEngine

val server = embeddedServer(Netty, 9091) {}
println(server.environment.connectors)

或通过将 environment 强制转换为 ApplicationEngineEnvironment

fun Application.module(testing: Boolean = false) {
    (environment as ApplicationEngineEnvironment).connectors.forEach { connector ->
        println("${connector.host}:${connector.port}")
    }
}