Я ищу библиотеку, которая позволяет создавать настольное приложение JVM с функцией сервера, прослушивающей локальную сеть для мобильных клиентских подключений. Конфигурации JSON и двоичные данные будут загружены клиентами. Нашел Ктора, ...

0
MainActivity 18 Янв 2021 в 21:10

1 ответ

Лучший ответ

Я полагаю, вам было бы интересно использовать тип конфигурации embeddedServer .

После того, как вы создали свой сервер, вам нужно вызвать start, который принимает один аргумент wait: Boolean, который указывает в их KDoc:

    /**
     * Starts this [ApplicationEngine]
     *
     * @param wait if true, this function does not exit until application engine stops and exits
     * @return returns this instance
     */
    public fun start(wait: Boolean = false): ApplicationEngine

Не выполняли никаких тестов, чтобы убедиться, что вызов server.start(false) не блокирует основной поток, но, судя по документации, он действительно соответствует тому, что вы ищете.

Надеюсь, я был вам полезен

Редактировать

Этот пример кода, который я только что попробовал:

fun main(args: Array<String>): Unit {

    val server = embeddedServer(Netty) {
    }
    
    
    server.start()
    
    println("Hello!")
}

Получился такой результат:

Output

Поэтому я бы сказал, что server.start() и server.start(false) (которые одинаковы, потому что по умолчанию для аргумента установлено значение false, не блокируется основной поток, и вы можете запускать свое приложение вместе с Ktor

1
Some random IT boy 20 Янв 2021 в 20:03