默认
打赏 发表评论 52
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
消息同步库用于存储所有用于消息同步的Timeline,每个Timeline对应一个接收端  -------->
如果a和b单聊,a发了一条信息,是否会在to-a和to-b的Timeline里面,各写一条记录。
如果abcd群聊,a发了一条信息,是否会在to-a/b/c/d的Timeline里面,各写一条记录。

@JackJiang 谢谢。
评论 52
消息存储是按照会话来的,比方a/b的单聊,a/c的单聊,某个组的群聊,在数据库设计的时候,怎么来表示这个Timeline。@JackJiang   谢谢
引用:JackJiang 发表于 2020-05-28 10:43
你问的是本地sqlite怎么设计还是服务端?

@JackJIang  您好,问的是服务器端消息存储的数据库设计。 怎么来按照会话存储,

因为需要按照用户来查询的,所以肯定会把用户编号作为一个独立的列。那么是不是会有两个表,一个是对话信息,记录会话编号及参与者(sessid, userid),另外一个就是会话消息 (sessid, msgid, msgcontent...)
类似这样?

单聊或者群聊的时候,这个会话编号该怎么生成呢。
谢谢。
引用:JackJiang 发表于 2020-05-28 13:41
你说的会话id可以用对方的用户id,你这个表里记录的其实是跟“谁”的聊天记录,你要理解问题的本质

a/b单聊的话,比方a发了一条消息,就记录 发送方a,接收方b,消息id1, 发送时间/内容等。同样b发送的就记录 发送方b,接收方a, 消息id2,发送时间/内容。  a需要拉取离线消息时,就把所有发送方或者接收方为a的记录,拉取回来就行了。
如果是群聊,发送方为发言的人,接收方为群id。a拉取离线消息时,依次拉取所在群的消息即可。
是这样吗 @JackJiang
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部