修复同步连接的处理问题
parent
5544a469c4
commit
60b357e6f9
|
@ -1,5 +1,4 @@
|
||||||
|
|
||||||
### 修复
|
### 修复
|
||||||
|
|
||||||
- 修复处于最新版本时更新弹窗日志内容显示异常的问题
|
- 修复同步连接的处理问题
|
||||||
- 修复更新到最新版本后的首次启动时的更新日志未显示的问题
|
|
||||||
|
|
|
@ -71,8 +71,13 @@ const getLocalListData = async(): Promise<LX.Sync.ListData> => {
|
||||||
|
|
||||||
return lists
|
return lists
|
||||||
}
|
}
|
||||||
const getSyncMode = async(keyInfo: LX.Sync.KeyInfo): Promise<LX.Sync.Mode> => await new Promise((resolve, reject) => {
|
const getSyncMode = async(socket: LX.Sync.Socket): Promise<LX.Sync.Mode> => await new Promise((resolve, reject) => {
|
||||||
let removeListener = sendSelectMode(keyInfo, (mode) => {
|
const handleDisconnect = () => {
|
||||||
|
sendCloseSelectMode()
|
||||||
|
reject(new Error('disconnect'))
|
||||||
|
}
|
||||||
|
socket.on('disconnect', handleDisconnect)
|
||||||
|
let removeListener = sendSelectMode(socket.data.keyInfo, (mode) => {
|
||||||
removeListener()
|
removeListener()
|
||||||
resolve(mode)
|
resolve(mode)
|
||||||
})
|
})
|
||||||
|
@ -221,15 +226,8 @@ const overwriteList = (sourceListData: LX.Sync.ListData, targetListData: LX.Sync
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleMergeListData = async(socket: LX.Sync.Socket): Promise<LX.Sync.ListData | null> => {
|
const handleMergeListData = async(socket: LX.Sync.Socket): Promise<LX.Sync.ListData | null> => {
|
||||||
let isSelectingMode = false
|
const mode: LX.Sync.Mode = await getSyncMode(socket)
|
||||||
const handleDisconnect = () => {
|
|
||||||
if (!isSelectingMode) return
|
|
||||||
sendCloseSelectMode()
|
|
||||||
}
|
|
||||||
socket.on('disconnect', handleDisconnect)
|
|
||||||
isSelectingMode = true
|
|
||||||
const mode: LX.Sync.Mode = await getSyncMode(socket.data.keyInfo)
|
|
||||||
isSelectingMode = false
|
|
||||||
const [remoteListData, localListData] = await Promise.all([getRemoteListData(socket), getLocalListData()])
|
const [remoteListData, localListData] = await Promise.all([getRemoteListData(socket), getLocalListData()])
|
||||||
console.log('handleMergeListData', 'remoteListData, localListData')
|
console.log('handleMergeListData', 'remoteListData, localListData')
|
||||||
let listData: LX.Sync.ListData
|
let listData: LX.Sync.ListData
|
||||||
|
@ -452,12 +450,12 @@ const syncList = async(socket: LX.Sync.Socket): Promise<LX.Sync.ListData | null>
|
||||||
return await handleMergeListDataFromSnapshot(socket, patchListData(fileData))
|
return await handleMergeListDataFromSnapshot(socket, patchListData(fileData))
|
||||||
}
|
}
|
||||||
|
|
||||||
const checkSyncQueue = async(): Promise<void> => {
|
// const checkSyncQueue = async(): Promise<void> => {
|
||||||
if (!syncingId) return
|
// if (!syncingId) return
|
||||||
console.log('sync queue...')
|
// console.log('sync queue...')
|
||||||
await wait()
|
// await wait()
|
||||||
await checkSyncQueue()
|
// await checkSyncQueue()
|
||||||
}
|
// }
|
||||||
|
|
||||||
// export {
|
// export {
|
||||||
// syncList = async(_io: Server, socket: LX.Sync.Socket) => {
|
// syncList = async(_io: Server, socket: LX.Sync.Socket) => {
|
||||||
|
@ -475,7 +473,18 @@ const checkSyncQueue = async(): Promise<void> => {
|
||||||
|
|
||||||
const _syncList = async(_io: Server, socket: LX.Sync.Socket) => {
|
const _syncList = async(_io: Server, socket: LX.Sync.Socket) => {
|
||||||
io = _io
|
io = _io
|
||||||
await checkSyncQueue()
|
let disconnected = false
|
||||||
|
socket.on('disconnect', () => {
|
||||||
|
disconnected = true
|
||||||
|
if (syncingId == socket.data.keyInfo.clientId) syncingId = null
|
||||||
|
})
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (disconnected) throw new Error('disconnected')
|
||||||
|
if (!syncingId) break
|
||||||
|
await wait()
|
||||||
|
}
|
||||||
|
|
||||||
syncingId = socket.data.keyInfo.clientId
|
syncingId = socket.data.keyInfo.clientId
|
||||||
return await syncList(socket).then(newListData => {
|
return await syncList(socket).then(newListData => {
|
||||||
if (newListData) registerUpdateSnapshotTask(socket, { ...newListData })
|
if (newListData) registerUpdateSnapshotTask(socket, { ...newListData })
|
||||||
|
|
Loading…
Reference in New Issue