0

今天我正在制作一个实时应用程序,我想使用 WebSockets 来更新我的状态。

一切正常,直到我得到这个异常:

kotlinx.serialization.SerializationException: Serializer for class 'DefaultClientWebSocketSession' is not found.
Mark the class as @Serializable or provide the serializer explicitly.

我搜索和搜索,但没有找到任何东西。

所以我的代码看起来与此类似:

Gradle 导入:

implementation("io.ktor:ktor-client-core:1.6.2")
implementation("io.ktor:ktor-client-cio:1.6.2")
implementation("io.ktor:ktor-client-serialization:1.6.2")
implementation("io.ktor:ktor-client-websockets:1.6.2")

代码:

suspend fun main() {
    val endpoint = Url("http://localhost:8080")
    val client = HttpClient(CIO) {
        install(JsonFeature) {
            serializer = KotlinxSerializer()
        }
        install(WebSockets)
    }
    client.webSocket({
        url {
            takeFrom(endpoint)
            path("beeam")
        }
    }) {
        //Do something
    }
}

我希望那里有人可以帮助我。

4

1 回答 1

0

问题

问题是,endpoint.protocol不是URLProtocol.HTTPURLProtocol.WS并且与takeFrom您一起转让此财产。

解决方案

suspend fun main() {
    val endpoint = Url("http://localhost:8080")
    val client = HttpClient(CIO) {
        install(JsonFeature) {
            serializer = KotlinxSerializer()
        }
        install(WebSockets)
    }
    client.webSocket({
        url {
            takeFrom(endpoint)
            path("beeam")
            protocol = URLProtocol.WS
        }
    }) {
        //Do something
    }
}
于 2021-08-03T08:51:15.680 回答