kotlin 在ktor客户端连接关闭之前从服务器获取连续json数据

wbrvyc0a  于 2023-01-26  发布在  Kotlin
关注(0)|答案(1)|浏览(167)

我在我的android项目中使用ktor客户端,我想在关闭连接之前获得countinous数据。下面是nodeJS应用程序给予countinuosly数据的示例。

const app = require("express")()
let count = 0

app.get("/", (req, res) => {
    const headers = {
        'Content-Type': 'text/event-stream',
        'Connection': 'keep-alive',
        'Cache-Control': 'no-cache'
    }
    res.writeHead(200, headers)

    setInterval(() => {
        res.write({data: count})
        count++
    }, 2000);
})

app.listen(3000, () => console.log("ok"))

我不知道如何实现这一点,我不能找到任何在互联网上也。任何帮助将不胜感激。

tnkciper

tnkciper1#

一旦响应流对客户端可用,就可以从响应流读取数据。下面是一个示例:

val client = HttpClient(CIO) {
    install(HttpTimeout)
}
client.prepareGet("http://localhost:3000/") {
    timeout {
        requestTimeoutMillis = Long.MAX_VALUE
    }
}.execute { response ->
    val channel = response.bodyAsChannel()

    while (!channel.isClosedForRead) {
        val buffer = ByteBuffer.allocateDirect(1024)
        val read = channel.readAvailable(buffer)
        if (read == -1) break
        buffer.flip()
        val jsonString = Charsets.UTF_8.decode(buffer).toString()
        println(jsonString)
    }
}

相关问题