@aochuang/client-sdk 1.0.365 → 1.0.367
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -610,6 +610,10 @@ export default class ClientChatMessage {
|
|
|
610
610
|
if (!groupField || !messageTime || (message && message.msgType === '_EMPTY_')) {
|
|
611
611
|
return
|
|
612
612
|
}
|
|
613
|
+
// 临时占位消息的wechatTime是浏览器本地时间,和手机端的消息时间不是同一个时钟,不能作为判断旧消息的基准,否则时钟偏差会导致对方紧接着的回复被当成旧消息过滤掉
|
|
614
|
+
if (message && message._temp) {
|
|
615
|
+
return
|
|
616
|
+
}
|
|
613
617
|
const lastMessageTime = this.getLastMessageTime(groupField)
|
|
614
618
|
if (!lastMessageTime || messageTime > lastMessageTime) {
|
|
615
619
|
this.lastMessageTimeMap[groupField] = messageTime
|
|
@@ -272,14 +272,7 @@ export default class ClientChatSession {
|
|
|
272
272
|
// 这里需要轮询从后端获取会话,后端会话更新和创建是异步的,所以要多轮训请求几次
|
|
273
273
|
let pollRequest = this.pollRequestMap[sessionId]
|
|
274
274
|
if (pollRequest && pollRequest.ps) {
|
|
275
|
-
|
|
276
|
-
this._addGetSessionLog('复用会话轮询', {
|
|
277
|
-
sessionId,
|
|
278
|
-
messageId: taskOptions.messageId,
|
|
279
|
-
wechatTime: taskOptions.wechatTime,
|
|
280
|
-
taskAdded,
|
|
281
|
-
taskCount: pollRequest.serializeTasks.length
|
|
282
|
-
})
|
|
275
|
+
this._addGetSessionSerializeTask(pollRequest, serializeMethod, taskOptions)
|
|
283
276
|
return pollRequest.ps
|
|
284
277
|
}
|
|
285
278
|
|
|
@@ -291,23 +284,20 @@ export default class ClientChatSession {
|
|
|
291
284
|
if (rs.data) {
|
|
292
285
|
done(rs)
|
|
293
286
|
} else {
|
|
294
|
-
|
|
295
|
-
sessionId,
|
|
296
|
-
requestCount: pollRequest.requestCount
|
|
297
|
-
})
|
|
287
|
+
pollRequest.emptyResponseCount += 1
|
|
298
288
|
}
|
|
299
289
|
}, (error) => {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
requestCount: pollRequest.requestCount,
|
|
303
|
-
error: error && (error.message || error.errMsg || error.toString && error.toString()) || error
|
|
304
|
-
})
|
|
290
|
+
pollRequest.requestErrorCount += 1
|
|
291
|
+
pollRequest.lastRequestError = error && (error.message || error.errMsg || error.toString && error.toString()) || error
|
|
305
292
|
return Promise.reject(error)
|
|
306
293
|
})
|
|
307
294
|
})
|
|
308
295
|
pollRequest.serializeTasks = []
|
|
309
296
|
pollRequest.serializeTaskMap = {}
|
|
310
297
|
pollRequest.requestCount = 0
|
|
298
|
+
pollRequest.emptyResponseCount = 0
|
|
299
|
+
pollRequest.requestErrorCount = 0
|
|
300
|
+
pollRequest.lastRequestError = null
|
|
311
301
|
pollRequest.startedAt = Date.now()
|
|
312
302
|
this._addGetSessionSerializeTask(pollRequest, serializeMethod, taskOptions)
|
|
313
303
|
this.pollRequestMap[sessionId] = pollRequest
|
|
@@ -341,14 +331,16 @@ export default class ClientChatSession {
|
|
|
341
331
|
this._addGetSessionLog('会话轮询合并完成', {
|
|
342
332
|
sessionId,
|
|
343
333
|
requestCount: pollRequest.requestCount,
|
|
334
|
+
emptyResponseCount: pollRequest.emptyResponseCount,
|
|
335
|
+
requestErrorCount: pollRequest.requestErrorCount,
|
|
344
336
|
duration: Date.now() - pollRequest.startedAt,
|
|
345
337
|
baseLastMsgTime: context.baseLastMsgTime,
|
|
346
338
|
lastMsgTime: rs.data.lastMsgTime,
|
|
347
339
|
lastMsgId: rs.data.lastMsgId,
|
|
348
340
|
unreadMsgCount: rs.data.unreadMsgCount,
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
341
|
+
processedMessageCount: context.processedMessageIds.length,
|
|
342
|
+
skippedMessageCount: context.skippedMessageIds.length,
|
|
343
|
+
unreadMessageCount: context.unreadMessageIds.length,
|
|
352
344
|
hasSessionMap: !!this.sessionMap[sessionId],
|
|
353
345
|
hasAllSessionGroup: !!this._getSessionBySessionGroup(sessionId, ALL_WECHAT_ACCOUNT_ID),
|
|
354
346
|
hasAccountSessionGroup: !!this._getSessionBySessionGroup(sessionId, wechatAccountId)
|
|
@@ -358,8 +350,11 @@ export default class ClientChatSession {
|
|
|
358
350
|
this._addGetSessionLog('会话轮询失败', {
|
|
359
351
|
sessionId,
|
|
360
352
|
requestCount: pollRequest.requestCount,
|
|
353
|
+
emptyResponseCount: pollRequest.emptyResponseCount,
|
|
354
|
+
requestErrorCount: pollRequest.requestErrorCount,
|
|
361
355
|
duration: Date.now() - pollRequest.startedAt,
|
|
362
|
-
error: error && (error.message || error.errMsg || error.toString && error.toString()) || error
|
|
356
|
+
error: error && (error.message || error.errMsg || error.toString && error.toString()) || error,
|
|
357
|
+
lastRequestError: pollRequest.lastRequestError
|
|
363
358
|
})
|
|
364
359
|
return Promise.reject(error)
|
|
365
360
|
}).finally(() => {
|
|
@@ -418,17 +418,22 @@ class ClientChat {
|
|
|
418
418
|
}
|
|
419
419
|
const localSession = this.session.findSession(({ session }) => session.conversationId === sessionId)
|
|
420
420
|
if (!localSession) {
|
|
421
|
-
this.
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
421
|
+
if (!this.session.pollRequestMap[sessionId]) {
|
|
422
|
+
this.socket.addLog({
|
|
423
|
+
group: 'client-chat-message:onAddMessageSuccess',
|
|
424
|
+
content: {
|
|
425
|
+
title: '未获取到会话,开始从服务端获取',
|
|
426
|
+
data: {
|
|
427
|
+
sessionId,
|
|
428
|
+
accountId,
|
|
429
|
+
wechatFriendId: data.wechatFriendId,
|
|
430
|
+
wechatAccountId: data.wechatAccountId,
|
|
431
|
+
messageId: data.id,
|
|
432
|
+
wechatTime: data.wechatTime
|
|
433
|
+
}
|
|
429
434
|
}
|
|
430
|
-
}
|
|
431
|
-
}
|
|
435
|
+
})
|
|
436
|
+
}
|
|
432
437
|
return this.session.getSession(sessionId, (rs, context) => {
|
|
433
438
|
if (rs && rs.data) {
|
|
434
439
|
const isAfterServerMessage = data.wechatTime > context.baseLastMsgTime
|
|
@@ -455,20 +460,7 @@ class ClientChat {
|
|
|
455
460
|
}, {
|
|
456
461
|
messageId: data.id,
|
|
457
462
|
wechatTime: data.wechatTime
|
|
458
|
-
}).
|
|
459
|
-
this.socket.addLog({
|
|
460
|
-
group: 'client-chat-message:onAddMessageSuccess',
|
|
461
|
-
content: {
|
|
462
|
-
title: '未获取到会话,从服务端获取失败',
|
|
463
|
-
data: {
|
|
464
|
-
error: error && (error.message || error.errMsg || error.toString && error.toString()) || error,
|
|
465
|
-
sessionId,
|
|
466
|
-
accountId,
|
|
467
|
-
wechatFriendId: data.wechatFriendId
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
})
|
|
471
|
-
})
|
|
463
|
+
}).catch(() => {})
|
|
472
464
|
} else {
|
|
473
465
|
this.session.updateSession(sessionId, ({ session }) => {
|
|
474
466
|
// listChange/getSession may already include this message in unreadMsgCount.
|
|
@@ -562,17 +554,22 @@ class ClientChat {
|
|
|
562
554
|
// 更新会话未读消息数量
|
|
563
555
|
const localSession = this.session.findSession(({ session }) => session.conversationId === sessionId)
|
|
564
556
|
if (!localSession) {
|
|
565
|
-
this.
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
557
|
+
if (!this.session.pollRequestMap[sessionId]) {
|
|
558
|
+
this.socket.addLog({
|
|
559
|
+
group: 'client-chat-message:onAddMessageSuccess',
|
|
560
|
+
content: {
|
|
561
|
+
title: '未获取到会话,开始从服务端获取',
|
|
562
|
+
data: {
|
|
563
|
+
sessionId,
|
|
564
|
+
accountId,
|
|
565
|
+
wechatChatroomId: data.wechatChatroomId,
|
|
566
|
+
wechatAccountId: data.wechatAccountId,
|
|
567
|
+
messageId: data.id,
|
|
568
|
+
wechatTime: data.wechatTime
|
|
569
|
+
}
|
|
573
570
|
}
|
|
574
|
-
}
|
|
575
|
-
}
|
|
571
|
+
})
|
|
572
|
+
}
|
|
576
573
|
return this.session.getSession(sessionId, (rs, context) => {
|
|
577
574
|
if (rs && rs.data) {
|
|
578
575
|
const isAfterServerMessage = data.wechatTime > context.baseLastMsgTime
|
|
@@ -602,20 +599,7 @@ class ClientChat {
|
|
|
602
599
|
}, {
|
|
603
600
|
messageId: data.id,
|
|
604
601
|
wechatTime: data.wechatTime
|
|
605
|
-
}).
|
|
606
|
-
this.socket.addLog({
|
|
607
|
-
group: 'client-chat-message:onAddMessageSuccess',
|
|
608
|
-
content: {
|
|
609
|
-
title: '未获取到会话,从服务端获取失败',
|
|
610
|
-
data: {
|
|
611
|
-
error: error && (error.message || error.errMsg || error.toString && error.toString()) || error,
|
|
612
|
-
sessionId,
|
|
613
|
-
accountId,
|
|
614
|
-
wechatChatroomId: data.wechatChatroomId
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
})
|
|
618
|
-
})
|
|
602
|
+
}).catch(() => {})
|
|
619
603
|
} else {
|
|
620
604
|
this.session.updateSession(sessionId, ({ session }) => {
|
|
621
605
|
// listChange/getSession may already include this message in unreadMsgCount.
|