即时通信工具中同步离线会话消息的方法及装置

  随着网络的普及,即时通信(Instant messaging,简称:IM)工具已经成为 人们进行信息交互的一种主要方式,目前的IM工具大都支持多人会话,也就是 通常所说的群组,同一群组的各用户可以共同进行信息交流,极大的提高了用 户间进行信息交流的效率。如果群组里的某一个用户一段时间离线,而这段时 间内群组里其他的用户却进行了大量会话(这里,将用户离线期间,群组里其 他用户的会话称为针对该用户的离线会话消息),那么,当该用户上线后,最希 望的是能快速同步群组内自己离线时的离线会话消息,以及时了解群组内其他 用户所交流的信息。
  目前在IM工具中同步离线会话消息的方式为:用户登陆IM工具后,IM服 务器将群组内该用户离线期间的离线会话消息推送给该用户,客户端将IM服务 器推送的离线会话消息与本地存储的会话消息进行合并显示。目前的同步方式 存在以下问题:1、当离线会话比较多时,服务器会一次性返回大量的离线会话 消息给用户,不利于网络传输,有时候也没有必要,因为用户并不一定需求所 有的离线消息;2、当客户端合并本地消息和新获取的离线会话消息时,中间有 可能会出现消息空洞,造成上下文缺失,不利于用户对聊天内容的理解。
  发明内容
  为了保证用户在即时通信工具中同步离线会话消息时,可以灵活获取离线 会话消息的数量及获取连续的消息内容,本发明实施例提供了一种即时通信工 具中同步离线会话消息的方法及装置。所述技术方案如下:
一方面,本发明实施例提供了一种即时通信工具中同步离线会话消息的方 法,所述方法包括:
  从即时通信服务器中拉取指定数量的离线会话消息;
  确定所拉取的离线会话消息是否与客户端存储的会话消息连续;
  当所拉取的离线会话消息与客户端存储的会话消息连续时,将所拉取的离 线会话消息与客户端存储的会话消息合并后显示;
  当所拉取的离线会话消息与客户端存储的会话消息不连续时,显示所拉取 的离线会话消息。
  另一方面,本发明实施例还提供了一种即时通信工具中同步离线会话消息 的装置,所述装置包括:
  消息拉取模块,用于从即时通信服务器中拉取指定数量的离线会话消息;
  确定模块,用于确定所拉取的离线会话消息是否与客户端存储的会话消息 连续;
  第一处理模块,用于当所拉取的离线会话消息与客户端存储的会话消息连 续时,将所拉取的离线会话消息与客户端存储的会话消息合并后显示;
  第二处理模块,用于当所拉取的离线会话消息与客户端存储的会话消息不 连续时,显示所拉取的离线会话消息。
  本发明实施例提供的技术方案带来的有益效果是:1、主动地从即时通信服 务器中拉取指定数量的离线会话消息,避免了即时通信服务器一次性下发大量 离线会话消息的情况,从而节省了即时通信服务器的网络带宽,也节省了客户 端的流量,并加快了信息交互的速度。2、在从即时通信服务器中拉取指定数量 的离线会话消息后,确定所拉取的离线会话消息是否与客户端存储的会话消息 连续,所拉取的离线会话消息与客户端存储的会话消息连续时,将所拉取的离 线会话消息与客户端存储的会话消息合并后显示,避免所拉取的离线会话消息 与本地存储的会话消息间有消息遗漏,以保证会话消息的连续性。在所拉取的 离线会话消息与客户端存储的会话消息不连续时,仅显示所拉取的离线会话消 息,如果用户想要获取更多的离线会话消息,就可以从即时通信服务器中继续 拉取一定量的离线会话消息,逐步的建立连续的消息,以方便用户阅读及理解 消息。
  附图说明
  为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
  图1是本发明实施例一提供的即时通信工具中同步离线会话消息的方法流 程图;
   即时通信工具中同步离线会话消息的方法及装置_第1张图片
  图2是本发明实施例二提供的即时通信工具中同步离线会话消息的方法流 程图;
即时通信工具中同步离线会话消息的方法及装置_第2张图片
  图3是本发明实施例三提供的第一种即时通信工具中同步离线会话消息的 装置的结构示意图;
    即时通信工具中同步离线会话消息的方法及装置_第3张图片
  图4是本发明实施例三提供的第二种即时通信工具中同步离线会话消息的 装置的结构示意图;
    即时通信工具中同步离线会话消息的方法及装置_第4张图片
  图5是本发明实施例三提供的第三种即时通信工具中同步离线会话消息的 装置的结构示意图;
    即时通信工具中同步离线会话消息的方法及装置_第5张图片
  图6是本发明实施例三提供的第四种即时通信工具中同步离线会话消息的 装置的结构示意图。
    即时通信工具中同步离线会话消息的方法及装置_第6张图片
  具体实施方式
  为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明 实施方式作进一步地详细描述。
实施例一
  本实施例提供了一种即时通信工具中同步离线会话消息的方法,该方法的 执行主体可以为诸如手机、平板电脑或者个人计算机等客户端,也可以是即时 通信工具客户端,参见图1,方法流程具体可以如下:
  步骤101:从即时通信服务器中拉取指定数量的离线会话消息;
  本步骤在具体实现时,可以包括如下操作:
  向即时通信服务器发送同步离线会话消息的请求,所述请求包括请求获取 的离线会话消息的数量,及用于指示客户端会话消息存储情况的指示信息;
  接收即时通信服务器根据所述指示信息返回的指定数量的离线会话消息。
  本发明实施例可以根据需要主动地从即时通信服务器中拉取指定数量的离 线会话消息,避免了即时通信服务器一次性下发大量离线会话消息的情况,从 而节省了即时通信服务器的网络带宽,也节省了客户端的流量,并加快了信息 交互的速度。
  步骤102:确定所拉取的离线会话消息是否与客户端存储的会话消息连续;
  本步骤在具体实现时,可以包括如下两种实现方式:
  方式一、确定所拉取的离线会话消息中编号最小的离线会话消息的编号, 是否与客户端存储的会话消息中编号最大的会话消息的编号连续;
  当所拉取的编号最小的离线会话消息的编号与客户端存储的编号最大的会 话消息的编号连续时,则判定所拉取的离线会话消息与客户端存储的会话消息 连续;
当所拉取的编号最小的离线会话消息的编号与客户端存储的编号最大的会 话消息的编号不连续时,则判定所拉取的离线会话消息与客户端存储的会话消 息不连续。
  方式二、本实例中,如果接收所述即时通信服务器根据所述指示信息返回 的指定数量的离线会话消息的同时,还包括:接收即时通信服务器返回的指定 数量的离线会话消息的前一离线会话消息的编号;则,确定即时通信服务器返 回的编号是否与客户端存储的会话消息中编号最大的会话消息的编号相同;
当即时通信服务器返回的编号与客户端存储的会话消息中编号最大的会话 消息的编号相同时,则判定所拉取的离线会话消息与客户端存储的会话消息连 续;
  当即时通信服务器返回的编号与客户端存储的会话消息中编号最大的会话 消息的编号不相同时,则判定所拉取的离线会话消息与客户端存储的会话消息 不连续。
  当所拉取的离线会话消息与客户端存储的会话消息连续时,执行步骤103;
  当所拉取的离线会话消息与客户端存储的会话消息不连续时,执行步骤 104;
  步骤103:将所拉取的离线会话消息与客户端存储的会话消息合并后显示;
  步骤104:显示所拉取的离线会话消息。
  本实施例在从即时通信服务器中拉取指定数量的离线会话消息后,确定所 拉取的离线会话消息是否与客户端存储的会话消息连续,所拉取的离线会话消 息与客户端存储的会话消息连续时,将所拉取的离线会话消息与客户端存储的 会话消息合并后显示,避免所拉取的离线会话消息与本地存储的会话消息间有 消息遗漏,以保证会话消息的连续性。在所拉取的离线会话消息与客户端存储 的会话消息不连续时,仅显示所拉取的离线会话消息,如果用户想要获取更多 的离线会话消息,就可以从即时通信服务器中继续拉取一定量的离线会话消息, 逐步的建立连续的消息,以方便用户阅读及理解消息。
  本发明实施例在具体实现时,在从即时通信服务器中拉取指定数量的离线 会话消息后,可以包括:确定所拉取的指定数量的离线会话消息是否为未读的 消息;当所拉取的指定数量的离线会话消息为未读的会话消息时,提示用户存 在未读的离线会话消息;当所拉取的指定数量的离线会话消息为已读的会话消 息时,将不会给用户任何提示,避免打扰用户。
  另外,本发明实施例在具体实现时,在从即时通信服务器中拉取指定数量 的离线会话消息后,还可以包括:确定所拉取的指定数量的离线会话消息是否 为最后的离线会话消息;当所拉取的指定数量的离线会话消息不是最后的离线 会话消息时,允许返回执行从即时通信服务器中拉取指定数量的离线会话消息 的操作,当所拉取的指定数量的离线会话消息是最后的离线会话消息时,则不 再允许执行从即时通信服务器中拉取指定数量的离线会话消息的操作,以避免 无用的操作出现。
  实施例二
  本实施例提供了一种即时通信工具中同步离线会话消息的方法,为了便于 说明,本实施例结合上述实施例一的内容,对同步离线会话消息的方式进行详 细地解释说明。
参见图2,本实施例提供的方法流程具体如下:
  步骤201:客户端向即时通信服务器发送同步离线会话消息的请求,其中, 所述请求包括请求获取的离线会话消息的数量,及用于指示客户端会话消息存 储情况的指示信息;
  本发明实施例在具体实现时,当客户端检测到用户登陆时,或者客户端检 测到用户打开即时通信的对话框时,或者客户端接收到用户发送的获取同步离 线会话消息的指令时,向即时通信服务器发送同步离线会话消息的请求;
  本发明实施例具体实现时,客户端在向即时通信服务器发送同步离线会话 消息的请求之前,还包括:客户端判断客户端本地是否存储有会话消息;当客 户端本地未存储有任何会话消息时,则可以将所述指示信息的指示位置为一特 殊值或属性特征,以通过该特殊值或者属性特征告知即时通信服务器客户端本 地未存储有任何会话消息;当客户端本地存储有会话消息时,则可以将所述指 示信息的指示位置为客户端本地所存储的编号最大的会话消息的编号,以通过 该设置的编号告知即时通信服务器客户端本地已获取的会话消息的进度。
  步骤202:客户端接收即时通信服务器根据所述请求中的指示信息返回的指 定数量的离线会话消息;
本实施例在具体实现时,客户端间的会话消息均通过即时通信服务器进行 转发,且各会话消息按照其发送时间的先后顺序进行编号,本实例中用编号来 标识各会话消息。这样,在即时通信服务器接收到同步离线会话的请求后,当 该请求中的指示信息指示客户端本地未存储有任何会话消息时,则从所存储的 未读的离线会话消息中按编号由大到小的顺序选择指定数量的离线会话消息, 并将所选择的指定数量的离线会话消息返回给客户端;当所接收到的请求中的 指示信息中给出的是客户端本地存储的会话消息的编号时,从所存储的未读的 离线会话消息中按编号由大到小的顺序选择指定数量的离线会话消息,并判断 所选择的会话消息中是否存在与所接收到的编号重复的会话消息,当所选择的 会话消息中存在与所接收到的编号重复的会话消息时,则将所选择的会话消息 中与所接收到的编号相同的会话消息及小于所接收到的编号的会话消息剔除, 之后,将经过剔除处理后的所选择的会话消息返回给客户端,以避免所返回的 会话消息与客户端存储的会话消息有重复的部分;当所选择的会话消息中未存 在与所接收到的编号重复的会话消息时,则直接将所选择的会话消息返回给客 户端。
  步骤203:确定所拉取的离线会话消息是否与客户端存储的会话消息连续;
  本步骤在具体实现时,可以包括如下两种实现方式:
  方式一、确定所拉取的离线会话消息中编号最小的离线会话消息的编号, 是否与客户端存储的会话消息中编号最大的会话消息的编号连续;
当所拉取的编号最小的离线会话消息的编号与客户端存储的编号最大的会 话消息的编号连续时,则判定所拉取的离线会话消息与客户端存储的会话消息 连续;
当所拉取的编号最小的离线会话消息的编号与客户端存储的编号最大的会 话消息的编号不连续时,则判定所拉取的离线会话消息与客户端存储的会话消 息不连续。
  方式二、本实例中,如果接收所述即时通信服务器根据所述指示信息返回 的指定数量的离线会话消息的同时,还包括:接收即时通信服务器返回的指定 数量的离线会话消息的前一离线会话消息的编号;则,确定即时通信服务器返 回的编号是否与客户端存储的会话消息中编号最大的会话消息的编号相同;
当即时通信服务器返回的编号与客户端存储的会话消息中编号最大的会话 消息的编号相同时,则判定所拉取的离线会话消息与客户端存储的会话消息连 续;
  当即时通信服务器返回的编号与客户端存储的会话消息中编号最大的会话 消息的编号不相同时,则判定所拉取的离线会话消息与客户端存储的会话消息 不连续。
  当所拉取的离线会话消息与客户端存储的会话消息连续时,执行步骤204;
  当所拉取的离线会话消息与客户端存储的会话消息不连续时,执行步骤 205;
  步骤204:将所拉取的离线会话消息与客户端存储的会话消息合并后显示;
  步骤205:显示所拉取的离线会话消息。
  本实施例在从即时通信服务器中拉取指定数量的离线会话消息后,确定所 拉取的离线会话消息是否与客户端存储的会话消息连续,所拉取的离线会话消 息与客户端存储的会话消息连续时,将所拉取的离线会话消息与客户端存储的 会话消息合并后显示,避免所拉取的离线会话消息与本地存储的会话消息间有 消息遗漏,以保证会话消息的连续性。在所拉取的离线会话消息与客户端存储 的会话消息不连续时,仅显示所拉取的离线会话消息,如果用户想要获取更多 的离线会话消息,就可以从即时通信服务器中继续拉取一定量的离线会话消息, 逐步的建立连续的消息,以方便用户阅读及理解消息。
  本发明实施例在具体实现时,在从即时通信服务器中拉取指定数量的离线 会话消息后,可以包括:确定所拉取的指定数量的离线会话消息是否为未读的 消息,本实例中可以通过设置一标记位来标识离线会话消息是否已读,如当该 标记位的值为0时,则说明离线会话消息未读,当该标记位的值为1时,则说 明离线会话消息已读;当所拉取的指定数量的离线会话消息为未读的会话消息 时,提示用户存在未读的离线会话消息;当所拉取的指定数量的离线会话消息 为已读的会话消息时,将不会给用户任何提示,避免打扰用户。
另外,本发明实施例在具体实现时,在从即时通信服务器中拉取指定数量 的离线会话消息后,还可以包括:确定所拉取的指定数量的离线会话消息是否 为最后的离线会话消息,本实例中,即时通信服务器可以通过一标识位来告知 客户端当前其所拉取的离线会话消息是否为最后的离线会话消息;当所拉取的 指定数量的离线会话消息不是最后的离线会话消息时,允许返回执行从即时通 信服务器中拉取指定数量的离线会话消息的操作,当所拉取的指定数量的离线 会话消息是最后的离线会话消息时,则不再允许执行从即时通信服务器中拉取 指定数量的离线会话消息的操作,以避免无用的操作出现。
  现结合具体的应用实例来详细说明上述即时通信工具中同步离线会话消息 的方法,具体描述可以如下所述:
群组A包括用户A1、A2及A3,即时通信服务器存储用户A1、A2及A3 的会话消息,且用户A1、A2及A3的会话消息按照其发送时间的先后顺序进行 编号,本实例中,用户A1、A2及A3彼此间的会话消息经由即时通信服务器来 转发。
  某一时段B内,用户A1、A2及A3均在线,且彼此间进行会话,该时段B 内,A1、A2及A3间先后共进行了100条会话,则A1、A2及A3间的会话消 息按其发送时间的先后顺序从1号编号至100号,在经由即时通信服务器转发 后,用户A1、A2及A3本地存储有编号1到100的会话消息。
  在时段B结束时,用户A1离线,而在接下来的时段C内,用户A2及A3 继续在群组A内进行会话,该时段C内,A2及A3先后又进行了100条会话, 则A2及A3间的会话消息按其发送时间的先后顺序从101继续编号至200。则 到时间段C结束时,即时通信服务器共存储有编号1到200的共200条会话消 息,其中编号101到200的会话消息是针对用户A1的未读的离线会话消息。
  那么,在时刻C,用户A1上线,客户端检测到用户A1打开群组A的对话 框的指令时,向即时通信服务器发送同步离线会话消息的请求,本实例中,该 请求中包括本次请求获取的离线会话消息的数量(如20条),及A1存储的最后 一个会话消息的编号100;即时通信服务器在接收到该请求后,向用户A1返回 其未读的最新的20条离线会话消息(编号200到181的离线会话消息);用户 A1在接收到编号200到181的离线会话消息后,确定本地存储的会话消息是否 与所获取的离线会话消息连续,本实例判断得出本次从即时通信服务器所获取 的编号为200到181的离线会话消息与本地存储的编号从1到100的会话消息 并不连续,则仅显示所拉取的编号为200到181的离线会话消息,隐藏或者放 弃本地存储的会话消息。
  本实例在具体实现时,即时通信服务器在将编号为200到181的离线会话 消息发送给用户A1后,会将该编号为200到181的离线会话消息标记为已读, 具体可以通过设置一标记位来标识离线会话消息是否已读,如当该标记位的值 为0时,则说明离线会话消息未读,当该标记位的值为1时,则说明离线会话 消息已读。
本实例在具体实现时,如果用户A1需要获取更多的未读的离线会话消息, 则可以再次向即时通信服务器发送同步离线会话消息的请求,同样的,该请求 中包括所请求获取的离线会话消息的数量(如20条),及A1存储的最后一个会 话消息的编号100;即时通信服务器在接收到该请求后,向用户A1返回其未读 的最新的20条离线会话消息(编号180到161的离线会话消息);用户A1在接 收到编号180到161的离线会话消息后,确定本地存储的会话消息是否与所获 取的离线会话消息连续,本实例判断得出本次从即时通信服务器所获取的编号 为180到161的离线会话消息与本地存储的编号从1到100的会话消息并不连 续,则仅显示所拉取的编号为180到161的离线会话消息。
以上,用户A1在获取的离线会话消息与本地存储的会话消息不连续时,并 不会将所获取的离线会话消息与本地存储的会话消息合并显示,而是仅显示所 获取的离线回话消息,以避免出现会话出现不连续的情况,提高用户的阅读体 验。
  用户A1可以按照上述方式根据自己的需要多次从即时通信服务器中获取 指定数量的离线会话记录,避免出现一次性从即时通信会话记录中获取大量的 离线会话消息的情况,从而节省了即时通信服务器的网络带宽,也节省了客户 端的流量,并可以进一步加快信息交互的速度。
  例如,用户A1按照上述方式根据自己的需要再次向及时通信服务器发送同 步离线会话消息的请求,同样的,该请求中包括所请求获取的离线会话消息的 数量(如20条),及A1存储的最后一个会话消息的编号100;即时通信服务器 在接收到该请求后,向用户A1返回其未读的最新的20条离线会话消息(编号 120到101的离线会话消息);用户A1在接收到编号120到101的离线会话消 息后,确定本地存储的会话消息是否与所获取的离线会话消息连续,本实例判 断得出本次从即时通信服务器所获取的编号为120到101的离线会话消息与本 地存储的编号从1到100的会话消息连续,说明用户A1已经获取了全部的离线 会话消息,合并本地存储的会话消息与获取的离线会话消息,完整的展示给用 户。
  实施例三
  本实施例提供了一种即时通信工具中同步离线会话消息的的装置,该装置 用于执行上述实施例一或实施例二提供的即时通信工具中同步离线会话消息的 方法。参见图3,该装置包括:
消息拉取模块301,用于从即时通信服务器中拉取指定数量的离线会话消 息;
确定模块302,用于确定所拉取的离线会话消息是否与客户端存储的会话消 息连续;
  第一处理模块303,用于当所拉取的离线会话消息与客户端存储的会话消息 连续时,将所拉取的离线会话消息与客户端存储的会话消息合并后显示;
  第二处理模块304,用于当所拉取的离线会话消息与客户端存储的会话消息 不连续时,显示所拉取的离线会话消息。
  参见图4,本实例在具体实现时,如图3所示的消息拉取模块301包括:
发送单元3011,用于向即时通信服务器发送同步离线会话消息的请求,所 述请求包括请求获取的离线会话消息的数量,及用于指示客户端会话消息存储 情况的指示信息;
接收单元3012,用于接收所述即时通信服务器根据所述指示信息返回的指 定数量的离线会话消息。
本实例在具体实现时,确定模块302,用于确定所拉取的离线会话消息中编 号最小的离线会话消息的编号,是否与客户端存储的会话消息中编号最大的会 话消息的编号连续;当所拉取的编号最小的离线会话消息的编号与客户端存储 的编号最大的会话消息的编号连续时,则判定所拉取的离线会话消息与客户端 存储的会话消息连续;当所拉取的编号最小的离线会话消息的编号与客户端存 储的编号最大的会话消息的编号不连续时,则判定所拉取的离线会话消息与客 户端存储的会话消息不连续。
  本实例在具体实现时,接收单元3011,还用于接收所述即时通信服务器返 回的所述指定数量的离线会话消息的前一离线会话消息的编号;
  相应地,确定模块302,用于确定所述即时通信服务器返回的编号是否与客 户端存储的会话消息中编号最大的会话消息的编号相同;当所述即时通信服务 器返回的编号与客户端存储的会话消息中编号最大的会话消息的编号相同时, 则判定所拉取的离线会话消息与客户端存储的会话消息连续;当所述即时通信 服务器返回的编号与客户端存储的会话消息中编号最大的会话消息的编号不相 同时,则判定所拉取的离线会话消息与客户端存储的会话消息不连续。
  参见图5,本实例在具体实现时,如图3所示的述装置还包括:
  第一判断模块305,用于确定所拉取的指定数量的离线会话消息是否为最后 的离线会话消息;
  第一控制模块306,用于当所拉取的指定数量的离线会话消息不是最后的离 线会话消息时,允许返回执行从即时通信服务器中拉取指定数量的离线会话消 息的操作。
  参见图6,本实例在具体实现时,如图3所示的述装置还包括:
  第二判断模块307,用于确定所拉取的指定数量的离线会话消息是否为未读 的消息;
  消息提示模块308,用于当所拉取的指定数量的离线会话消息为未读的会话 消息时,提示用户存在未读的离线会话消息。
  本发明实施例所提供的即时通信工具中同步离线会话消息的装置可以动地 从即时通信服务器中拉取指定数量的离线会话消息,避免了即时通信服务器一 次性下发大量离线会话消息的情况,从而节省了即时通信服务器的网络带宽, 也节省了客户端的流量,并加快了信息交互的速度。并可以在从即时通信服务 器中拉取指定数量的离线会话消息后,确定所拉取的离线会话消息是否与客户 端存储的会话消息连续,所拉取的离线会话消息与客户端存储的会话消息连续 时,将所拉取的离线会话消息与客户端存储的会话消息合并后显示,避免所拉 取的离线会话消息与本地存储的会话消息间有消息遗漏,以保证会话消息的连 续性。在所拉取的离线会话消息与客户端存储的会话消息不连续时,仅显示所 拉取的离线会话消息,如果用户想要获取更多的离线会话消息,就可以从即时 通信服务器中继续拉取一定量的离线会话消息,逐步的建立连续的消息,以方 便用户阅读及理解消息。
  需要说明的是:上述实施例提供的即时通信工具中同步离线会话消息的装 置在同步离线会话消息时,仅以上述各功能模块的划分进行举例说明,实际应 用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内 部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外, 上述实施例提供的同步离线会话消息的装置与同步离线会话消息的方法实施例 属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
  声明:本文根据小米科技相关专利进行整理,版权归小米公司所有,仅供学习交流使用,侵权立删。

你可能感兴趣的:(android)