请选择 进入手机版 | 继续访问电脑版

默认
发表评论 21
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
请教一下IM的客户端如何保证消息的顺序
1、客户端本地有msgI的,
2、服务器有全局的消息id 趋势递增,
3、假设一个消息发送失败,没有服务器的全局消息id,请教一下如何保证消息的顺序显示?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:求助 IM开发
上一篇:求教关于IM聊天会话列表、离线消息拉取等的一些疑问下一篇:求教即时通讯IM服务端怎么做到无感热更新?

本帖已收录至以下技术专辑

推荐方案
评论 21
你的意思是,你本地发送失败的消息,在聊天界面上的显示顺序?
签名: 不开心,不快乐
引用:JackJiang 发表于 2022-06-06 11:22
你的意思是,你本地发送失败的消息,在聊天界面上的显示顺序?

是的
引用:JackJiang 发表于 2022-06-06 11:22
你的意思是,你本地发送失败的消息,在聊天界面上的显示顺序?

楼主,我还想请教一下未读数量在客户端是直接保存到会话表中,还是第一次通过历史消息计算未读数量呢?

本地的话,可以想办法在本地进行顺序纠正,服务端的顺序逻辑能少就少一点最好,必竟服务端首要是为了高并发,而顺序跟并发是矛盾的
签名: 不开心,不快乐
引用:crazyerror 发表于 2022-06-07 07:55
楼主,我还想请教一下未读数量在客户端是直接保存到会话表中,还是第一次通过历史消息计算未读数量呢?

因为本地有缓存,就通过历史消息计算未读数量,这样最简单
签名: 不开心,不快乐
引用:JackJiang 发表于 2022-06-07 12:50
因为本地有缓存,就通过历史消息计算未读数量,这样最简单

每次初始化sdk 的时候 sdk 根据历史消息进行统计?
引用:JackJiang 发表于 2022-06-07 12:48
本地的话,可以想办法在本地进行顺序纠正,服务端的顺序逻辑能少就少一点最好,必竟服务端首要是为了高并 ...

我暂时想是服务器端全局消息递增,但是客户端这个发送失败。没想好如何给他排序。
引用:crazyerror 发表于 2022-06-07 19:26
每次初始化sdk 的时候 sdk 根据历史消息进行统计?

统计啥啊,本地有缓存的情况下,每次离线加载的都可以算做未读
签名: 不开心,不快乐
引用:JackJiang 发表于 2022-06-08 09:43
统计啥啊,本地有缓存的情况下,每次离线加载的都可以算做未读

楼主,我想请教一下这个客户端发送消息失败后,这个顺序怎么处理?
引用:crazyerror 发表于 2022-06-08 20:20
楼主,我想请教一下这个客户端发送消息失败后,这个顺序怎么处理?

失败的消息,就按发送时间和顺序显示就好了,这没有什么复杂逻辑可言
签名: 不开心,不快乐
我也想知道
签名: 今天很666
引用:JackJiang 发表于 2022-06-09 10:14
失败的消息,就按发送时间和顺序显示就好了,这没有什么复杂逻辑可言

我现在是全局消息递增,准备按照这个排序,但是对于发送失败的消息没有全局消息id,是否就继承与上一个发送成功的消息id 这么处理呢?然后回执后讲消息修改为真的全局id
引用:crazyerror 发表于 2022-06-10 13:35
我现在是全局消息递增,准备按照这个排序,但是对于发送失败的消息没有全局消息id,是否就继承与上一个发 ...

那你该给他一个全局id
签名: 不开心,不快乐
引用:JackJiang 发表于 2022-06-10 15:47
那你该给他一个全局id

上面的有一个现象就是当会话中没有1个消息的时候发送的时候还是会存在问题
引用:JackJiang 发表于 2022-06-10 15:47
那你该给他一个全局id

假设发送消息的时候A-B 发送消息, 本地会话中没有1条消息,然而在后续的同步会话中却同步来了1个消息。这个发送失败的消息,如何排序,头疼很,,,,
引用:crazyerror 发表于 2022-06-11 16:00
上面的有一个现象就是当会话中没有1个消息的时候发送的时候还是会存在问题

存在什么问题呢
签名: 不开心,不快乐
引用:crazyerror 发表于 2022-06-11 16:01
假设发送消息的时候A-B 发送消息, 本地会话中没有1条消息,然而在后续的同步会话中却同步来了1个消息。 ...

你的所有发出消息都会有缓存,这能有什么问题
签名: 不开心,不快乐
引用:JackJiang 发表于 2022-06-11 16:10
你的所有发出消息都会有缓存,这能有什么问题

用户登录,后台进行同步数据,这时候 用户打开了给B 发送消息,结果发送失败了, 后台同步消息收到了B给发送的消息。这个怎么 排序呢?发送失败的过程中,B给A 又发送了消息 相当于 这个发送失败的消息,前后都有消息,这个怎么处理,顺序问题呢?
引用:crazyerror 发表于 2022-06-11 16:41
用户登录,后台进行同步数据,这时候 用户打开了给B 发送消息,结果发送失败了, 后台同步消息收到了B给 ...

数据同步完成之前就像微信那样,菊花一直转,直到完成后才消失,用户才开始聊天
签名: 不开心,不快乐
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部