我正在使用使用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存储反射数据。为什么?我不知道。清除浏览器数据以解决此问题。