Kotlin Ktor反射创建自定义WebSocket会话不';t更新构造函数参数

Kotlin Ktor反射创建自定义WebSocket会话不';t更新构造函数参数,kotlin,websocket,ktor,Kotlin,Websocket,Ktor,我正在开发一个使用Kotlin后端和React前端编写的web应用程序,它使用Ktor来设置web服务器。我目前正在尝试添加需要WebSocket连接的功能,并使用Ktor示例聊天应用程序中的自定义会话模型在整个WebSocket会话中保持状态: 然而,我对Ktor创建这些会话所做的反射有一个问题 自定义会话定义如下: data class THavalonUserSession(val id: String, var name: String, var socket: DefaultWebS

我正在开发一个使用Kotlin后端和React前端编写的web应用程序,它使用Ktor来设置web服务器。我目前正在尝试添加需要WebSocket连接的功能,并使用Ktor示例聊天应用程序中的自定义会话模型在整个WebSocket会话中保持状态:

然而,我对Ktor创建这些会话所做的反射有一个问题

自定义会话定义如下:

data class THavalonUserSession(val id: String,
 var name: String, var socket: DefaultWebSocketSession?)
并在以下块中初始化:

      intercept(ApplicationCallPipeline.Features) {
          if (call.sessions.get<THavalonUserSession>() == null) {
              call.sessions.set(THavalonUserSession(generateNonce(), "", null))
            }
        }
当我在Firefox上运行它时,它会工作,直到我将套接字参数名称从socket更改为mySocket,此时它会给出错误:

java.lang.IllegalArgumentException: Couldn't instantiate type class main.THavalonUserSession for parameters [id, name, socket]

我能想到的唯一一件事是它在浏览器中以某种方式缓存类名,但这对我来说毫无意义。

结果是Ktor将反射数据存储在本地存储中。为什么?我不知道。清除浏览器数据以解决此问题

结果是Ktor将反射数据存储在本地存储器中。为什么?我不知道。清除浏览器数据以解决此问题

java.lang.IllegalArgumentException: Couldn't instantiate type class main.THavalonUserSession for parameters [id, name, socket]