默认
打赏 发表评论 33
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
引用:41C 发表于 2020-09-15 11:23
先赞再看

讲究
先赞再看
引用:zhxh007 发表于 2020-09-10 22:53
1.拉的话是拉消息吧,未读数怎么计算呢,
2.还有就是如何判断是在线消息还是离线消息,因为在线状态不准 ...



关于离线可靠性的问题,你看看这篇文章《IM消息送达保证机制实现(二):保证离线消息的可靠投递
引用:JackJiang 发表于 2020-08-06 12:33
1、不要用推,还是要用拉简单,这是主流作法。
2、文中的意思是拉未读数的时候就取首屏。

1.拉的话是拉消息吧,未读数怎么计算呢,
2.还有就是如何判断是在线消息还是离线消息,因为在线状态不准确
3.离线消息删么?如果删的话,怎么解决离线消息的衔接问题,比如这样一种情况,和一个联系人有500条离线消息,拉取到倒数第200条的时候,客户端离线了,这时候还剩下300条没拉完,又产生了100条,那么当客户端拉取完这新产生的100条后,是请求本地还是请求服务器,如果是请求服务器,那么服务器只会给之前剩下的300条,客户端还得做本地逻辑兼容吧
引用:zhxh007 发表于 2020-08-06 12:15
楼主的思路很好,但是小弟还有一事不明啊,
1.客户端在线,直接推送消息给客户端,可是客户端的在线状态是 ...

1、不要用推,还是要用拉简单,这是主流作法。
2、文中的意思是拉未读数的时候就取首屏。
楼主的思路很好,但是小弟还有一事不明啊,
1.客户端在线,直接推送消息给客户端,可是客户端的在线状态是不准确的,可能推送失败,那么这个时候怎么累加未读数,是在线的时候推送完后,等客户端ack么,如果等不到认为这条消息是离线消息,然后累加未读?
2.未读消息计数器里有个lastMsg,这个存储的是最后的N条消息,是这个什么时候下发给客户端呢,是客户端点击对话页进去后,下发给客户端,还是客户端拉取拉取未读气泡的时候,就下发,然后客户端打开对话框直接本地取这N条,还是客户端打开聊天对话框的时候,通过http接口取这儿N条
谢谢啦~
引用:doublesouth 发表于 2020-07-10 16:36
写缓存失败了就会存在存在缓存中未读数和数据库中不一致的问题,不过业务上只要保证消息不丢,偶尔出现未 ...

这种普通聊天数据不涉及到钱,其实没必要,也很难保证百分之百的。
引用:JackJiang 发表于 2020-07-09 22:10
这个一致性的保证,跟所有的需要持久化和内存缓存数据同步时遇到的问题是一样的,这个场景下,肯定是在写 ...

写缓存失败了就会存在存在缓存中未读数和数据库中不一致的问题,不过业务上只要保证消息不丢,偶尔出现未读数不一致的问题好像也可以接受,只要保证最终一致性,不知道大佬是否也是这样做的?
引用:doublesouth 发表于 2020-07-09 16:57
消息先写入消息表,再在缓存中累加未读消息计数器,这两部的一致性是如何保证的?

这个一致性的保证,跟所有的需要持久化和内存缓存数据同步时遇到的问题是一样的,这个场景下,肯定是在写入表成功的情况下更新缓存未读数,否则不更新。
引用:JackJiang 发表于 2020-07-07 20:47
你可以问的具体一点

IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的_Snipaste_2020-07-09_16-57-24.jpg
消息先写入消息表,再在缓存中累加未读消息计数器,这两部的一致性是如何保证的?
引用:doublesouth 发表于 2020-07-07 20:21
离线消息表和缓存的一致性是如何保证的?

你可以问的具体一点
离线消息表和缓存的一致性是如何保证的?
引用:d4ksn 发表于 2020-06-16 21:26
好文章啊!

是滴,接地气的文章
好文章啊!
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部