Venkat
11/23/2023, 8:11 AMe5l
11/23/2023, 8:12 AMConnection: Close
and the requests are fit in keep alive timeoutandriyo
11/23/2023, 8:13 AMandriyo
11/23/2023, 8:14 AMVenkat
11/23/2023, 8:35 AMimport io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.request.*
suspend fun main() {
val client = HttpClient(CIO)
client.get("<http://ktor.io/>")
client.get("<http://ktor.io/>")
client.get("<http://ktor.io/>")
}
This creates three TCP connections (one for each GET request).Venkat
11/23/2023, 8:40 AMandriyo
11/23/2023, 8:43 AMVenkat
11/23/2023, 8:47 AMimport io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
suspend fun main() {
val client = HttpClient(CIO)
val res1 = client.get("<http://ktor.io/>")
println(res1.bodyAsText())
val res2 = client.get("<http://ktor.io/>")
println(res2.bodyAsText())
val res3 = client.get("<http://ktor.io/>")
println(res3.bodyAsText())
}
It doing the same. @Aleksei Tirman [JB] any idea, please?Aleksei Tirman [JB]
11/23/2023, 9:02 AMOkHttp
engine where the connections are reused by default.Venkat
11/23/2023, 9:31 AMe5l
11/23/2023, 9:31 AMVenkat
11/23/2023, 9:33 AMe5l
11/23/2023, 9:33 AMAleksei Tirman [JB]
11/23/2023, 9:33 AMVenkat
11/23/2023, 12:09 PMimport io.ktor.client.*
import io.ktor.client.engine.okhttp.*
import io.ktor.client.request.*
import kotlinx.coroutines.*
suspend fun main() {
val scope = CoroutineScope(Dispatchers.IO)
val client = HttpClient(OkHttp)
val responseDeferred = (0..3).map { scope.async { client.get("<http://ktor.io/>") } }
responseDeferred.awaitAll()
scope.cancel()
client.close()
}
Venkat
11/23/2023, 12:11 PMAleksei Tirman [JB]
11/23/2023, 12:46 PMandriyo
11/23/2023, 5:01 PM