问题描述
我仔细看了文档,打算采用时间戳的方式定时去环信服务器同步聊天记录到自己服务器。比如说我每1小时去同步一次,第一次用带时间戳和limit查询,假设返回20条和一个cursor。第二次开始,用前一次返回的cursor去查询,不带时间戳,直至没有cursor为止那么我的问题是,我的应用一直在产生新的聊天记录,有没有可能发生这种情况,去同步时不停的有cursor,会不会一直同步不完?或者换个角度问,请问这个cursor跟我第一次提交的时间戳是绑定的吗?cursor个数是确定的?
解决方案
用时间戳的方式定时去环信服务器同步聊天记录到自己服务器思路是没问题的,至于你担心cursor一直不断的问题,可以在每次用cursor分页时把最开始那个时间戳也带上!比如这样:https://a1.easemob.com/{org_name}/{app_name}/chatmessages?ql=select * where timestamp>{timestamp} limit=10&cursor={cursor}
解决方案二:
> forum.php?mod=redirect&goto=findpost&pid=2196&ptid=947用时间戳的方式定时去环信服务器同步聊天记录到自己服务器思路是没问题的,至于你担心cursor一直不断的问 ...我用这种方式去同步聊天记录,发现了一个问题,不知道是不是你们接口的问题。假设我在你们环信服务器有15条聊天数据第一次https://a1.easemob.com/{org_name}/{app_name}/chatmessages?ql=select * where timestamp>{timestamp}&limit=10。利用时间戳获取记录,这时,返回10条数据,返回一个cursor假设为'a'。这一步没问题第二次https://a1.easemob.com/{org_name}/{app_name}/chatmessages?cursor=a&limit=10。利用cursor获取记录,还是返回10条数据,返回一个cursor假设为'b'。第二次理论上应该是返回最后5条,但当我用a调用时,却返回了10条与第一次一样的数据。第三次跟第二次一样,用cursor=b去调,确实获得了最后5条。上面这个过程,我的前10条数据重复了,请问这是什么问题?
解决方案三:
https://a1.easemob.com/{org_name}/{app_name}/chatmessages?ql=select * where timestamp>{timestamp}&limit=10&cursor=a 你这样试试
解决方案四:
> forum.php?mod=redirect&goto=findpost&pid=2269&ptid=947https://a1.easemob.com/{org_name}/{app_name}/chatmessages?ql=select * where timestamp>{timestamp}&li ...谢谢。这样结果是对的。看来cursor是跟查询语句绑定的