fix(chat): 修复聊天消息解析和字符串构建问题
- 将StringBuilder替换为String变量以避免清空问题 - 添加JSON数据前缀处理,移除"data:"前缀 - 修复字符串拼接方式,使用+=操作符替代appendLine - 优化结果发布逻辑,直接发布字符串而非toString()调用
这个提交包含在:
父节点
6801b998e2
当前提交
d47ec13546
@ -20,28 +20,29 @@ class ChatVM : BaseViewModel() {
|
|||||||
HttpManager.getApi(Service::class.java).chat(ChatData("我的代办任务有哪些?"))
|
HttpManager.getApi(Service::class.java).chat(ChatData("我的代办任务有哪些?"))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.subscribe({ body ->
|
.subscribe({ body ->
|
||||||
val sb = StringBuilder()
|
var sb = ""
|
||||||
body.charStream().buffered().use { reader ->
|
body.charStream().buffered().use { reader ->
|
||||||
try {
|
try {
|
||||||
var line: String?
|
var line: String?
|
||||||
while (reader.readLine().also { line = it } != null) {
|
while (reader.readLine().also { line = it } != null) {
|
||||||
val l = line!!
|
val l = line!!
|
||||||
if (l.isNotEmpty()) {
|
if (l.isNotEmpty()) {
|
||||||
val model = GsonImplHelp.get().toObject(l, ChatModel::class.java)
|
val json = if (l.startsWith("data:")) l.removePrefix("data:").trim() else l
|
||||||
|
val model = GsonImplHelp.get().toObject(json, ChatModel::class.java)
|
||||||
if (t != model.type) {
|
if (t != model.type) {
|
||||||
sb.clear()
|
sb = ""
|
||||||
}
|
}
|
||||||
t = model.type
|
t = model.type
|
||||||
if (model.type == "string") {
|
if (model.type == "string") {
|
||||||
val model1 =
|
val model1 =
|
||||||
GsonImplHelp.get().toObject(l, ChatModel1::class.java)
|
GsonImplHelp.get().toObject(json, ChatModel1::class.java)
|
||||||
sb.appendLine(model1.data)
|
sb+=model1.data
|
||||||
} else {
|
} else {
|
||||||
val model2 =
|
val model2 =
|
||||||
GsonImplHelp.get().toObject(l, ChatModel2::class.java)
|
GsonImplHelp.get().toObject(json, ChatModel2::class.java)
|
||||||
sb.appendLine(model2.data.content)
|
sb+=model2.data.content
|
||||||
}
|
}
|
||||||
result.postValue(sb.toString())
|
result.postValue(sb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户