用于创建自定义 WebSocket 会话的 Ktor 反射不会更新构造函数参数



我正在使用使用Kotlin Backend编写的Web应用程序,并使用KTOR来设置Web服务器。我目前正在尝试添加需要WebSocket连接的功能,并使用KTOR示例聊天应用程序中的自定义会话模型在此处使用:https://github.com/ktorio/ktorio/ktor-samples/树/主/app/chat/src。

但是,我对Reflection 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))
            }
        }

当我在Chrome上运行该应用程序时,具有内置的React或React开发模式时,我会收到以下服务器端错误:

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

当我在Firefox上运行它时,它可以正常工作,直到我将插座参数名称从套接字更改为MySocket,此时它给出了错误:

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

我唯一能想到的是,这是浏览器中的缓存类名称,但这对我来说没有任何意义。

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

最新更新