mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 11:19:56 +00:00
perf: 优化数据流
This commit is contained in:
parent
207f09a4af
commit
8eb0a49ee6
@ -873,9 +873,11 @@ export default {
|
||||
|
||||
mounted() {
|
||||
this.subMsgListener()
|
||||
emitter.on('dialogMsgChange', this.onMsgChange);
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
emitter.off('dialogMsgChange', this.onMsgChange);
|
||||
this.subMsgListener(true)
|
||||
this.generateUnreadData(this.dialogId)
|
||||
//
|
||||
@ -905,7 +907,6 @@ export default {
|
||||
'dialogMsgTransfer',
|
||||
'dialogMsgKeep',
|
||||
'dialogIns',
|
||||
'dialogMsgStream',
|
||||
'cacheDialogs',
|
||||
'wsOpenNum',
|
||||
'touchBackInProgress',
|
||||
@ -1484,34 +1485,6 @@ export default {
|
||||
return
|
||||
}
|
||||
document.getSelection().removeAllRanges();
|
||||
},
|
||||
|
||||
dialogMsgStream(data) {
|
||||
const item = this.allMsgs.find(({type, id}) => type == "text" && id == data.id)
|
||||
if (!item) {
|
||||
return
|
||||
}
|
||||
if (typeof this.msgChangeCache[data.id] === "undefined") {
|
||||
this.msgChangeCache[data.id] = []
|
||||
this.msgChangeCache[`${data.id}_load`] = false
|
||||
}
|
||||
switch (data.type) {
|
||||
case 'append':
|
||||
data.text && this.msgChangeCache[data.id].push(...`${data.text}`.split("").map(text => {
|
||||
return {
|
||||
type: 'append',
|
||||
text
|
||||
}
|
||||
}))
|
||||
break;
|
||||
case 'replace':
|
||||
this.msgChangeCache[data.id] = [{
|
||||
type: 'replace',
|
||||
text: data.text
|
||||
}]
|
||||
break;
|
||||
}
|
||||
this.onMsgOutput(data.id, item.msg)
|
||||
}
|
||||
},
|
||||
|
||||
@ -1887,6 +1860,38 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 消息变化处理
|
||||
* @param data
|
||||
*/
|
||||
onMsgChange(data) {
|
||||
const item = this.allMsgs.find(({type, id}) => type == "text" && id == data.id)
|
||||
if (!item) {
|
||||
return
|
||||
}
|
||||
if (typeof this.msgChangeCache[data.id] === "undefined") {
|
||||
this.msgChangeCache[data.id] = []
|
||||
this.msgChangeCache[`${data.id}_load`] = false
|
||||
}
|
||||
switch (data.type) {
|
||||
case 'append':
|
||||
data.text && this.msgChangeCache[data.id].push(...`${data.text}`.split("").map(text => {
|
||||
return {
|
||||
type: 'append',
|
||||
text
|
||||
}
|
||||
}))
|
||||
break;
|
||||
case 'replace':
|
||||
this.msgChangeCache[data.id] = [{
|
||||
type: 'replace',
|
||||
text: data.text
|
||||
}]
|
||||
break;
|
||||
}
|
||||
this.onMsgOutput(data.id, item.msg)
|
||||
},
|
||||
|
||||
/**
|
||||
* 追加或替换消息
|
||||
* @param id
|
||||
|
||||
5
resources/assets/js/store/actions.js
vendored
5
resources/assets/js/store/actions.js
vendored
@ -3452,10 +3452,9 @@ export default {
|
||||
* 消息流
|
||||
* @param state
|
||||
* @param dispatch
|
||||
* @param commit
|
||||
* @param streamUrl
|
||||
*/
|
||||
streamDialogMsg({state, dispatch, commit}, streamUrl) {
|
||||
streamDialogMsg({state, dispatch}, streamUrl) {
|
||||
if (!/^https?:\/\//i.test(streamUrl)) {
|
||||
streamUrl = $A.mainUrl(streamUrl.substring(1))
|
||||
}
|
||||
@ -3468,7 +3467,7 @@ export default {
|
||||
case 'append':
|
||||
case 'replace':
|
||||
const data = $A.jsonParse(e.data);
|
||||
commit('setDialogMsgStream', {
|
||||
emitter.emit('dialogMsgChange', {
|
||||
type,
|
||||
id: e.lastEventId,
|
||||
text: data.content
|
||||
|
||||
4
resources/assets/js/store/mutations.js
vendored
4
resources/assets/js/store/mutations.js
vendored
@ -1,5 +1,3 @@
|
||||
export default {
|
||||
setDialogMsgStream(state, data) {
|
||||
state.dialogMsgStream = data;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
1
resources/assets/js/store/state.js
vendored
1
resources/assets/js/store/state.js
vendored
@ -121,7 +121,6 @@ export default {
|
||||
dialogHistory: [],
|
||||
dialogDraftTimer: {},
|
||||
dialogMsgTransfer: {time: 0},
|
||||
dialogMsgStream: {},
|
||||
dialogSseList: [],
|
||||
dialogDroupWordChain: {},
|
||||
dialogGroupVote: {},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user