Ktor Websocket 功能与 ktor 中的 ContentNeogation 功能 (JSON / GSON)
Posted
技术标签:
【中文标题】Ktor Websocket 功能与 ktor 中的 ContentNeogation 功能 (JSON / GSON)【英文标题】:Ktor Websocket feature with ContentNeogation feature (JSON / GSON) in ktor 【发布时间】:2021-05-20 10:17:09 【问题描述】:我正在尝试为 ktor 中的 Websocket 反序列化/序列化 JSON Payload。
目前我正在做类似的事情
// Global property
lateinit var globalGson: Gson
// fun Application.module()
install(ContentNegotiation)
gson
setDateFormat(DateFormat.LONG)
setPrettyPrinting()
globalGson = create() // init global property
在处理 websocket 时:
session.incoming.consumeEach frame ->
if (frame is Frame.Text)
globalGson.fromJson(frame.readText(), MyClass::class.java) // use global property
是否有推荐的方式将 Websocket 功能与 GSON 功能结合使用?
是否有任何优雅的方法可以访问特定类型的已注册 ContentNeogation 并在没有 ApplicationPipeline 的情况下使用它? (我相信 WebSocketSession 没有)
【问题讨论】:
【参考方案1】:不幸的是,无法将ContentNegotiation
与Websockets
一起使用来序列化/反序列化帧数据。最好的办法是直接使用gson 库或任何其他此类库。
【讨论】:
以上是关于Ktor Websocket 功能与 ktor 中的 ContentNeogation 功能 (JSON / GSON)的主要内容,如果未能解决你的问题,请参考以下文章
如何保持 Kotlin Ktor websocket 处于打开状态
尝试在客户端接收数据时,Ktor-websocket 库不执行任何操作