Как настроить NettyApplicationEngine в проекте koin-ktor?

Привет, конфигурация vanilla ktor Netty не позволяет использовать длинные URL-адреса, вам необходимо настроить размеры буфера HttpServerCodec. Как получить к этому доступ в приложении koin-ktor?


person Tom Larkworthy    schedule 20.07.2020    source источник


Ответы (1)


Я придумал хреновый способ. Я перешел на использование собственного main, которое в основном было вилкой Netty.EngineMain.

// Copy and paste of the io.ktor.server.netty.EngineMain
fun main(args: Array<String>) {
    val applicationEnvironment = commandLineEnvironment(args)
    NettyApplicationEngine(applicationEnvironment, { loadConfiguration(applicationEnvironment.config) }).start()
}

// Copy and paste of the io.ktor.server.netty.EngineMain
private fun NettyApplicationEngine.Configuration.loadConfiguration(config: ApplicationConfig) {
    val deploymentConfig = config.config("ktor.deployment")
    loadCommonConfiguration(deploymentConfig)
    deploymentConfig.propertyOrNull("requestQueueLimit")?.getString()?.toInt()?.let {
        requestQueueLimit = it
    }
    deploymentConfig.propertyOrNull("shareWorkGroup")?.getString()?.toBoolean()?.let {
        shareWorkGroup = it
    }
    deploymentConfig.propertyOrNull("responseWriteTimeoutSeconds")?.getString()?.toInt()?.let {
        responseWriteTimeoutSeconds = it
    }
    // Allow long URLs to be accepted
    httpServerCodec = {
        HttpServerCodec(1048576, 1048576, 1048576)
    }
}
person Tom Larkworthy    schedule 21.07.2020