具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本实施例提供了一种即时通信工具中同步离线会话消息的方法,该方法的执行主体可以为诸如手机、平板电脑或者个人计算机等客户端,也可以是即时通信工具客户端,参见图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,用于当所拉取的指定数量的离线会话消息为未读的会话消息时,提示用户存在未读的离线会话消息。
本发明实施例所提供的即时通信工具中同步离线会话消息的装置可以动地从即时通信服务器中拉取指定数量的离线会话消息,避免了即时通信服务器一次性下发大量离线会话消息的情况,从而节省了即时通信服务器的网络带宽,也节省了客户端的流量,并加快了信息交互的速度。并可以在从即时通信服务器中拉取指定数量的离线会话消息后,确定所拉取的离线会话消息是否与客户端存储的会话消息连续,所拉取的离线会话消息与客户端存储的会话消息连续时,将所拉取的离线会话消息与客户端存储的会话消息合并后显示,避免所拉取的离线会话消息与本地存储的会话消息间有消息遗漏,以保证会话消息的连续性。在所拉取的离线会话消息与客户端存储的会话消息不连续时,仅显示所拉取的离线会话消息,如果用户想要获取更多的离线会话消息,就可以从即时通信服务器中继续拉取一定量的离线会话消息,逐步的建立连续的消息,以方便用户阅读及理解消息。
需要说明的是:上述实施例提供的即时通信工具中同步离线会话消息的装置在同步离线会话消息时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的同步离线会话消息的装置与同步离线会话消息的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。