引用:追风筝的人 发表于 2021-03-02 14:35 数据库没错,那就好办了。 余下的,你就查:这个离线数据是: 1)什么时候加载到缓存中的; 2)什么地方加载到缓存中的; 3)是否是缓存中就已经重复了。 |
引用:JackJiang 发表于 2021-03-02 12:23 数据库没问题, 我怀疑是显示离线消息的时候,同时读取缓存和数据库中的离线消息,将这俩里面的离线消息同时显示出来,然后因为数据库已被读取的离线消息记录被删除,刷新页面之后又恢复正常. 那如果我把显示离线消息那里删掉的话,只读取缓存里的离线消息,这样又不会出现消息提示. 我这样的推断是没错的吧?如果是这样的话,怎么让他出现消息提示的红点? |
引用:追风筝的人 发表于 2021-03-02 11:56 看到你公司了,你这个项目应该有持续2开了2、3年了。文字都改成繁体了,应该是动过不少代码逻辑了。 默认版本的代码里,不存在这种问题的。你如果有默认的版本,如果能把默认没改过的代码版本跑起来对照一下看看效果,那是最好的。 重复肯定是另有原因,没必要盲目凑代码去删掉。 也没什么好怕的,那就来调试吧。 你先这样去诊断,先排险服务端读取过来的时候就是不重复的:
|
引用:JackJiang 发表于 2021-03-02 11:29 淳华科技(昆山)有限公司 我把那个rbchat_cache.js这一段代码中的回调函数删掉之后,就不会有重复消息显示了,但是消息提示那个红点没了 Cache4.prototype.loadOfflineMessagesAsync = function (from_user_uid, fn_callback_for_success) { var localUserUid = LocalUserInfo.getUid(); // 通过rest接口获取离线聊天数据(详见:“【接口1008-4-8】获取离线聊天消息的接口”的文档或服务端源码) RBChatRestHelper.submitGetOfflineChatMessagesToServer(localUserUid, from_user_uid, function (returnValue) { // 服务端返回的是java 1维Vector<OfflineMsgDTO>对象数组 // 对象OfflineMsgDTO的文档,详见:[url]http://docs.52im.net/extend/docs[/url] ... /OfflineMsgDTO.html var offlineMessagesList = JSON.parse(returnValue); // 回调通知 if (fn_callback_for_success) fn_callback_for_success(offlineMessagesList); }, function (errorThrownStr) { RBChatDialogHelper.showAlertDialog_WARN('載入失敗', (from_user_uid ? '與' + from_user_uid + '的' : '') + '離線聊天訊息載入失敗,可能是伺服器發生錯誤或是網路問題,請稍後再試!'); }); }; |
这就奇怪了,有改动什么代码吗? 另外,你公司叫什么?我查一下版本号 |