用户线状态是怎么维护啊,我用了wedsdk 和mobile sdk是两个进程,使用中间件redis维护状态可以么 |
可以指导下表结构设计下 |
引用:JackJiang 发表于 2022-01-12 12:27 谢谢指导 |
引用:crazyerror 发表于 2022-01-12 11:51 别纠结了,底线是,你只要保证在某个端有这个消息(表示这消息没有丢),那基本上逻辑就不会有太大问题,谁让他用户没事老换什么手机,换来换去,微信也不会这么给他同步啊 |
引用:JackJiang 发表于 2022-01-07 18:52 感觉这种实现不太好,如果本地存储每次登录 进行拉取到最新的消息A1结束 , 下次登录的时候 还从本地A1 继续拉取, 每个消息通过在线推送和每次登录时候拉取, 相当与每个消息 客户端收到两次,保证每个客户端消息可以获取到。但是又感觉这个方案不是太好。 |
引用:crazyerror 发表于 2022-01-07 21:16 对的 |
引用:JackJiang 发表于 2022-01-07 18:52 谢谢耐心指导,貌似也是的已经看过了。 微信电脑端,在登录的时候有一个选项,让选择是否同步最近消息。 |
引用:crazyerror 发表于 2022-01-07 18:33 切换设备这种情况,只要保证消息不丢(即一台设备上有)就行了,微信就是这样的,没必要搞那么复杂的逻辑再去处理切换后的设备上的未读消同步问题(在用户看来,你正这样做了,他可能认为你程序有问题,明明那台已经看到拉过了,怎么这台还拉过来)。反正消息已经给你拉到了,谁你用户傻XX的换设备之前不把未读消息看一下,活该 |
引用:JackJiang 发表于 2022-01-07 18:12 请教一下这么对吗?如果一个新的设备,第一次 传递的是一个null,则啦去所有未ack的消息,进行分页啦去,每次记录最后一次ack, 拉取完毕后,下一次 登录的时候 按照上一次拉取最后一次ack 消息开始继续拉取 未收到的消息。 如果两个android设备 切换登录是否存在 100-200 消息在 A 拉取过了 200-300 B 拉取过了。 A 再次登录的时候拉取的是300-N 这时候 200-300 就不见了,每次拉取离线消息是 全量拉取 还是 只 拉取 未ACK 的消息? |
引用:crazyerror 发表于 2022-01-07 17:45 拉取的时候肯定是按顺序、按页拉,每页成工拉取后,最后一条消息的id可以作为一个确认标记(前提是你消息id是有序的) |
引用:JackJiang 发表于 2022-01-07 11:42 那么如何确定一个同步点,还是最近几个月没有ack 确认的消息都拉去然后去重呢? |
引用:crazyerror 发表于 2022-01-06 23:26 已同步的可以有个确认动作,没有确认的下次还会拉过来,如果跟实时收到的消息有重复,去重就好了 |
引用:JackJiang 发表于 2018-09-28 18:45 请教一下 假设客户端A 存在离线消息100条 当登录的时候同步了50条信息,又收到1条新的消息,这时候下线了,导致重新登录,如果用最新的ID 是否又问题,这时候如何设计同步离线消息? |
如果是基于时间戳,集群下如果出现时钟回拨问题,更新就不一定正确了。 |
引用:小张 发表于 2021-08-27 16:10 一般都是本地搜索啦 |
引用:JackJiang 发表于 2021-08-27 16:00 是不是没多少个IM应用,有做漫游搜索的?很多都是支持本地? |
引用:JackJiang 发表于 2021-08-27 16:00 以搜索出来的那条记录作为一页最上一条,然后,在下面就是< > 这种翻页形式~ |
引用:小张 发表于 2021-08-27 15:47 这种情况,就直接用“加载更多”这个概念就好了,不需要准确的多少页 |
引用:JackJiang 发表于 2021-08-26 15:47 就像图片中的。用微信举例,条件搜索后,会到一个记录列表,点击“查看上下文”,就会跳转到一个可以拉动的页面了。如果到了这个页面,但是终端是没有数据的,那不就要往服务端拉很多数据?否则也不知知道这个会话有多少数据量,ui的滚动条大小不知道有多少或者说不知道应该定位到哪个位置。 |