实现消息在不同终端漫游的方法及系统的制作方法
【技术领域】
[0001]本发明涉及即时通讯中的消息同步,尤其涉及实现消息在不同终端漫游的方法及系统。
【背景技术】
[0002]目前即时通讯产品已经广泛应用在人们的生活和工作中,即时的网络消息已经成为沟通的主要途径。我们可以通过PC、平板、手机等电子设备发送文字、语音、图片、表情等信息。现有技术只能在登录IM客户端的设备终端展示本设备上的本地聊天记录,不能在当前登录设备上展示在其他设备上登录时的聊天记录,即不能同步多个终端设备上的漫游聊天记录,导致用户在任何终端的聊天界面都不能看到最新的完整记录,更不能自动加载,不方便查询。并且没有和聊天会话窗口无缝对接,需要另外打开窗口或进行特别的设置,才能进入漫游消息界面,用户体验度不高。而对于提供了消息漫游的通讯工具,则需要用户进行特别的设置或进行购买,例如imo即时通讯,需要手动下载云消息,并手动合并到本地保存,用户体验度不高。
【发明内容】
[0003]根据本发明的一个方面,提供了一种实现消息在不同终端漫游的方法,包括:
[0004]A、通讯服务端解析接收到的消息数据并重新编码打包后存储;
[0005]B、目标IM客户端向通讯服务端提交获取消息数据的请求;
[0006]C、通讯服务端根据请求返回符合条件的消息数据包;
[0007]D、目标頂客户端接收数据包,解析存储并输出显示。
[0008]通过本方法,用户无需任何设置及手动同步,使消息漫游更加简单方便,解决了頂终端漫游消息的同步且使消息漫游更加人性化,提升了用户体验。
[0009]在一些实施方式中,步骤A包括:
[0010]通讯服务端通过通讯接口接收源IM客户端的消息数据,存储源IM客户端的连接用户ID和对应的连接地址;
[0011]通讯服务端解析消息数据,并将解析出的消息数据重新编码打包;
[0012]通讯服务端将打包的消息数据持久化到云存储。
[0013]由此,通过将頂客户端之间的聊天数据在通讯服务端的云存储,以将在不同终端的消息记录在云端合并,为实现消息在不同终端的漫游提供统一的消息记录。
[0014]在一些实施方式中,通讯服务端通过将消息数据根据字节数组的协议结构进行反序列化实现解析,通过根据字节数组的协议结构进行序列化实现编码。由此,将数据在传输中进行编码,能够实现聊天数据的安全传输。
[0015]在一些实施方式中,字节数组的协议结构包括消息头和消息体,消息头包括消息体的字节长度和接口代码,消息体包括发送者ID、接收者ID、消息数据长度及消息数据内容。
[0016]在一些实施方式中,在进入联系人界面时,步骤B包括:
[0017]目标頂客户端向通讯服务端发送离线消息请求;
[0018]步骤C包括:
[0019]通讯服务端根据离线消息请求查询云存储获取符合条件的离线数据,将数据编码后返回给目标頂客户端;
[0020]步骤D包括:
[0021]目标頂客户端接收离线数据,将最后一条离线消息内容和离线消息条数按照人员ID分类存储,并输出显示。
[0022]由此,实现在最近联系人界面与最近联系人在不同终端聊天消息的同步漫游。
[0023]在一些实施方式中,在进入聊天界面时,步骤B包括:
[0024]目标IM客户端向通讯服务端发送最新消息请求;
[0025]步骤C包括:
[0026]通讯服务端根据最新消息请求查询云存储获取符合条件的最新的消息记录给頂客户端;
[0027]步骤D包括:
[0028]IM客户端将接收到的消息记录与本地存储的消息记录进行合并,更新本地存储;
[0029]頂客户端从已更新的本地存储数据中获取最新的消息记录输出显示。
[0030]由此,实现针对某一个具体聊天会话对象,在不同终端聊天消息的同步漫游。
[0031]根据本发明的一方面,还提供了一种消息在不同终端漫游的系统,包括:頂客户端和通讯服务端;
[0032]IM客户端包括客户端通讯接口模块、客户端协议编解码模块、存储模块和UI模块;
[0033]通讯服务端包括服务端通讯接口模块、服务端协议编解码模块和持久化数据管理丰吴块;
[0034]IM客户端通过客户端通讯接口模块连接通讯服务端,向服务端通讯接口模块发送消息数据和数据请求,并接收通讯服务端返回的消息数据包;
[0035]客户端协议编解码模块设置为解析消息数据包,输出至存储模块存储和输出至Π模块显示;
[0036]服务端协议编码模块设置为解析和编码消息数据,输出至持久化数据管理模块存储。
[0037]本发明通过通讯服务端的持久化云存储和頂客户端的自动消息请求,实现了消息在不同终端的自动化漫游加载,用户不需要任何设置和手动同步操作就可以看到在所有终端的消息记录,使消息在不同终端的漫游同步的过程变得非常简单便捷,提高了用户体验。
[0038]在一些实施方式中,客户端协议编解码模块和服务端协议编解码模块设置为通过将消息数据根据字节数组的协议结构进行序列化和反序列化,进行消息数据的编码和解析。由此,实现消息数据的安全传输,以更好的保证用户的聊天隐私。
[0039]在一些实施方式中,字节数组的协议结构包括消息头和消息体,消息头包括消息体的字节长度和接口代码,消息体包括发送者ID、接收者ID、消息数据长度及消息数据内容。
[0040]在一些实施方式中,数据请求包括离线消息请求和最新消息请求;
[0041]当为离线消息请求时,Π模块设置为根据离线消息请求的结果,按人员ID输出显示最后一条离线消息内容和离线消息条数;
[0042]当为最新消息请求时,UI模块设置为根据最新消息请求的结果,输出显示固定数目的云端存储的最新消息记录。
[0043]由此,用户不需要任何设置和手动操作,就能够看到最近联系人和某个聊天会话在不同终端的所有消息记录,自动实现消息漫游同步。而且每次获取固定数目的最新消息,根据用户终端的屏幕平滑展示消息内容,当用户下拉时自动加载不用另开窗口查看消息记录,使消息漫游更加人性化。
【附图说明】
[0044]图1为本发明一实施方式的消息漫游不同终端的方法的流程示意图;
[0045]图2为本发明一种实施方式的消息漫游不同终端的系统的框架示意图;
[0046]图3为图1所示的方法中的字节数组的协议结构的示意图;
[0047]图4为图1所示的方法中离线会话的存储表结构示意图。
【具体实施方式】
[0048]下面结合附图对本发明的实施方式作进一步详细的说明。
[0049]图1示意性地显示了根据本发明的一种实施方式的消息漫游不同终端的方法。本方法可以适用于不同的IM(Instant Messaging,即时通讯)终端,能够自动展示用户在不同终端的消息记录,实现了基于云计算的自动化聊天记录漫游。
[0050]如图1所示,该方法包括:
[0051]步骤SlOl:通讯服务端将接收到的消息解析并再编码后存储。
[0052]通讯服务端通过通讯接口(通过现有技术即可实现,如socket通信或采用頂通讯软件本身的通信机制)接收消息发送方通过頂客户端(例如飞信客户端或微信客户端或腾讯QQ客户端等)发送的聊天消息,保存消息发送方在连接服务端时的用户ID和对应的socket链接地址(例如“userA”对应“61.155.85.77:10005”),并通过字节数组排列技术将接收到的聊天消息解析分类,之后把聊天消息通过字节数组排列技术重新编码打包。其中,字节数组排列技术是通过将聊天消息按一定的协议结构序列化和反序列化,以实现数据的编码和解析。
[0053]图3示意性的显示了一种实施方式的字节数组的协议结构。如图3所示,该协议结构包括消息头30和消息体31。消息头30保存消息体的字节长度和接口代码,消息体31保存协议约定内容,例如发送者、接收者、消息内容长
度及消息内容。例如图3中示出的,消息头30为8bit,前4bit保存消息体的字节长度如本例中为252bit,后4bit保存接口代码如“发送消息”的接口代码“3001”。消息体31前4bit为发送者ID,紧接着的4bit为接收者ID,再紧接着的2bit保存聊天内容的字符串长度,最后的字节保存聊天消息的真实内容。当通讯服务端接收到聊天消息后,先将聊天消息按照图3所示的协议结构进行反序列化,并将聊天消息按照发送者和接收者的ID进行分类后,将同一接收者ID的重新编码打包。打包后通过分布式交换信息技术将数据通过socket写入缓存队列的长链接。在缓存的同时,通讯服务端将数据在云端持久化存储。
[0054]步骤S102:目标頂客户端在显示联系人界面时,向通讯服务端发送离线消息请求。
[0055]当用户通过用户名和密码登录頂客户端时,頂客户端软件本身首先进行用户界面的初始化操作(即读取本地存储的数据记录,根据頂客户端软件本身的各种界面和功能,将好友通讯录、最近联系人界面等进行数据的初始化,展示给用户,此为现有技术的部分,在此不过多赘述)。初始化完成后,在向用户显示最近联系人界面时,IM客户端加载本地数据库中的最后一条信息和未读条数,同时向通讯服务端发送离线消息请求。
[0056]步骤S103:通讯服务端接收到离线消息请求,查询云存储将符合条件的离线消息发送给目标頂客户端。
[0057]通讯服务端的云端存储有每个离线会话对应的人员ID、最后一条离线消息内容和离线消息条数等信息。图4示意性的显示了每个离线会话在云端存储的表结构,如图4所示,每个离线会话401 (由会话ID标识)对应一个发送者的人员ID402,该人员ID的发送者所发送的离线消息条数404和最后一条离线消息的内容403。通讯服务端接收到离线消息请求后,根据请求中的人员ID,查询云存储中的最后一条离线消息内容和离线消息条数,并将所有人员ID对应的离线消息数据根据字节数组协议结构编码后发送给IM客户端。
[0058]步骤S104:目标頂客户端接收离线消息进行本地存储和刷新UI显示。
[0059]目标IM客户端接收到离线消息数据后,首先根据字节数组协议结构将数据解析,解析后按照人员ID将最后一条离线消息内容和离线消息条数分类存入本地数据库,再从更新后的本地数据库读取离线消息刷新UI (User Interface,即用户界面)显示每个人员ID对应的最新的最后一条离线消息内容和离线消息条数。
[0060]步骤S105:目标頂客户端进入聊天界面加载本地消息,并向通讯服务端发送最新消息请求。
[0061]用户通过目标IM客户端进入特定会话聊天界面时,IM客户端优先加载本地数据库中最新的固定条数的消息记录,例如15条。同时,IM客户端向通讯服务端发送最新消息请求,通过用户ID (如userID)和当前会话ID (如targetID),请求当前会话对应的服务端存储的最新的固定条数的消息记录,如15条。
[0062]步骤S106:通讯服务端接收到最新消息请求,查询云存储,将符合条件的固定数目的最新消息发送给目标頂客户端。
[0063]通讯服务端接收到最新消息请求后,根据用户ID和会话ID查询云存储端保存的最新消息记录,并将符合条件(与当前请求的用户ID和会话ID匹配的最新的N条消息记录)的固定条数的最新消息数据编码后发送给目标IM客户端。
[0064]步骤S107:目标IM客户端接收最新消息,与本地存储的消息进行合并,更新本地存储和刷新Π显示。
[0065]IM客户端接收到最新消息数据后,字节数组排列技术将数据解析(具体方法与步骤SlOl通讯服务端的解析和编码方法相同,字节数组的协议结构如图3所示)以得到从通讯服务端获取的最新消息数据包括当前的用户ID、会话ID、最新消息的serverID及消息内容。解析后,IM客户端根据接收到的最新消息的serverlD和本地存储的消息的serverlD进行对比,如果serverlD对应的最新消息在本地数据库中不存在,就将对应的最新消息按照serverlD的存储顺序插入本地数据库中存储,例如本地数据库中存储有serverlD为2和4的消息记录,而解析出的最新消息的serverlD为3,就将serverlD为3的消息记录插入本地数据库相应数据表的serverlD为2和4的记录之间,也可以通过数据库指令存储后统一按serverlD排序,这些通过现有技术即可实现。完成最新消息的本地合并后,IM客户端根据当前本地存储的最新消息获取固定数目的消息记录刷新Π进行显示。
[0066]由此,完成数据请求、数据持久化和Π刷新后,当前IM客户端就展示所有终端合并后的云端最新的固定条数的聊天记录,从而实现消息通过云端存储在终端的漫游显示。而不同的頂客户端例如腾讯QQ、飞信、微信等,一般都是在当前会话中显示固定条数的聊天记录,通过本发明的方法,用户在不同终端设备上登录IM客户端后,用户在打开最近联系人界面、特定会话窗口和滑动下拉最近联系人界面及特定会话窗口界面时,IM客户端就分别向通讯服务端发送离线消息请求和最新消息请求,从而实现在不同设备终端的聊天记录在当前设备终端展示,即实现云消息的漫游同步。并且根据IM客户端在聊天窗口界面只展示固定条数消息的特点,本发明的每次最新消息请求都只返回固定条数(如15条)的最新消息记录,从而能够实现消息记录根据终端屏幕大小平滑展示,美观且方便用户查看。而当用户需要查看更多消息记录时,可通过滑动下拉再次触发IM客户端向通讯服务端请求最新消息,以加载展示更多消息记录。通过本发明的方法,用户无需任何设置及手动同步,使消息漫游更加简单方便,解决了頂终端漫游消息的同步且使消息漫游更加人性化,提升了用户体验。
[0067]图2示意性的显示了根据本发明的一种实施方式的实现消息漫游不同终端的系统的框架。如图2所示,该系统包括通讯服务端20、頂客户端21及云端2040。通讯服务端20包括通讯接口模块201、协议编解码模块202及持久化数据管理模块204。通讯接口模块201设置为与IM客户端进行通信,接收IM客户端的数据请求和将请求结果返回给IM客户端。协议编解码模块202设置为对发送和接收的数据通过字节数组排列的协议结构进行编码和解码,以实现数据的安全传输。本发明配置云存储环境(即云端),持久化数据管理模块204设置为将消息数据持久化存储在云端2040 (即通过云存储进行消息记录在服务端的保存,云存储是在云计算概念上延伸和发展出来的新兴的网络存储技术,是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统),并根据頂客户端21的请求查询云端2040,以获取满足请求条件的消息数据转交协议编解码模块202进行编解码后通过通讯接口模块201返回给頂客户端21。
[0068]IM客户端21包括通讯接口模块211、协议编解码模块212、数据存储模块213及UI模块214。通讯接口模块211设置为与通讯服务端20进行通信,向通讯服务端20发送消息请求和接收通讯服务端20返回的消息数据。协议编解码模块212设置为对发送和接收的数据通过字节数组排列的协议结构进行编码和解码,以实现数据的安全传输。数据存储模块213设置为接收云端的最新消息和离线消息,按人员ID分类存储到本地,同时存储本地初始化数据,以进行IM客户端的初始化和数据更新,IM客户端的数据存储采用现有技术中常用的存储方式实现即可,如数据库存储或设备自带的硬件存储。Π模块214设置为根据本地存储的最新消息和离线消息,输出消息记录至IM客户端屏幕,将相应的信息展示给用户。
[0069]当用户登录頂客户端21后,通过通讯接口模块211将聊天数据发送到通讯服务端20。通讯服务端20通过其通讯接口 201接收聊天数据,并将当前发送消息的客户端的用户ID和对应的socket链接地址进行相应存储,并将聊天数据递交给协议编解码模块202进行数据解析。协议编解码模块202将聊天数据按照字节数组的协议结构反序列化后,将解析出的数据重新编码打包转发给持久化数据管理模块204保存。当目标頂客户端21登陆终端设备时
,目标頂客户端21首先根据自身的现有功能完成初始化操作,之后进入Π模块214的最近联系人界面。进入最近联系人界面时,目标IM客户端21首先通过数据存储模块213加载本地数据库中的最后一条信息和未读条数通过UI模块214进行展示。同时,目标頂客户端21的通讯接口模块211向通讯服务端20的通讯接口模块201发送离线消息请求,请求参数包括当前用户ID和最近联系人的人员ID。服务端20的通讯接口模块201将离线消息请求转交给持久化数据管理模块204,由持久化数据管理模块204根据用户ID和对应的人员ID查询云端2040中存储的数据,将符合条件的每个离线会话对应的最后一条离线消息内容和离线消息条数等信息发送给协议编解码模块202,由协议编解码模块202将数据编码后通过通讯接口模块201返回给目标M客户端21的通讯接口模块211。之后,通讯接口模块211将数据包转交给协议编解码模块212进行解析后,发送给数据存储模块213以按照人员ID将最后一条离线消息内容和离线消息条数分类存储,存储后按照最新的数据存储内容刷新Π模块214,以向用户展示最近联系人的最新离线消息内容。
[0070]当用户点击进入某个具体的聊天会话的聊天界面时,IM客户端21首先加载本地数据存储模块213中的最新的15条消息记录通过UI模块214中显示。同时,目标頂客户端21的通讯接口模块211向通讯服务端20的通讯接口模块201发送最新消息请求,请求参数包括当前用户ID和对应会话的人员ID。服务端20的通讯接口模块201将最新消息请求转交给持久化数据管理模块204,由持久化数据管理模块204根据用户ID和对应的人员ID查询云端2040中存储的数据,将符合条件的最新的15条信息记录发送给协议编解码模块202,由协议编解码模块202将数据编码后通过通讯接口模块201返回给目标IM客户端21的通讯接口模块211。之后,通讯接口模块211将数据包转交给协议编解码模块212进行解析后,发送给数据存储模块213,有数据存储模块213将最新消息按照serverlD与本地的消息进行比较,如果本地不存在当前serverlD的消息,就将对应serverlD的最新消息在本地存储。完成对比和存储合并后,按照最新的数据存储内容刷新Π模块214,以向用户展示所有终端合并后的最新消息内容。
[0071 ] 需要说明的是,通讯服务端20还包括一个数据缓存模块203设置为接收协议编解码模块202的编码消息数据包,通过分布式交换信息技术将数据包压入缓存队列,等待转发给目标IM客户端,这和现有技术相同。现有技术是通过数据缓存进行消息的即时通信的,即当有消息来而对方在线时,就通过从队列头读取最早压入队列的消息,和将最新来的消息压入队列未实现与客户端的即时通信的。这样的方式,IM客户端接收到的都是缓存队列中读取的最新消息,由于不能持久化存储,在当前客户端读取走之后,用户在不同的客户端登录时就无法获取到,因而只适合进行即时消息显示,不能进行不同终端的漫游。本发明在将消息压入队列后同时存储在云端数据库,用户在不同终端登录时,通过通讯服务端的持久化云存储和IM客户端的自动消息请求,实现了消息在不同终端的自动化漫游加载,用户不需要任何设置和手动同步操作就可以看到在所有终端的消息记录,使消息在不同终端的漫游同步的过程变得非常简单便捷,提高了用户体验。而且每次获取固定数目的最新消息,根据用户终端的屏幕平滑展示消息内容,当用户下拉时自动加载不用另开窗口查看消息记录,使消息漫游更加人性化。
[0072] 以上所述的仅是本发明的一些实施方式。对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
【主权项】
1.实现消息在不同终端漫游的方法,包括: A、通讯服务端解析接收到的消息数据并重新编码打包后存储; B、目标IM客户端向所述通讯服务端提交获取消息数据的请求; C、所述通讯服务端根据所述请求返回符合条件的消息数据包; D、所述目标IM客户端接收所述数据包,解析存储并输出显示。2.根据权利要求1所述的方法,其中,所述步骤A包括: 通讯服务端通过通讯接口接收源頂客户端的消息数据,存储所述源頂客户端的连接用户ID和对应的连接地址; 所述通讯服务端解析所述消息数据,并将解析出的消息数据重新编码打包; 所述通讯服务端将所述打包的消息数据存储。3.根据权利要求2所述的方法,其中,所述通讯服务端通过将所述消息数据根据字节数组的协议结构进行反序列化实现所述解析,通过根据字节数组的协议结构进行序列化实现编码。4.根据权利要求3所述的方法,其中,所述字节数组的协议结构包括消息头和消息体,所述消息头包括消息体的字节长度和接口代码,所述消息体包括发送者ID、接收者ID、消息数据长度及消息数据内容。5.根据权利要求1所述的方法,其中,在进入联系人界面时,所述步骤B包括: 所述目标頂客户端向所述通讯服务端发送离线消息请求; 所述步骤C包括: 所述通讯服务端根据所述离线消息请求查询云存储获取符合条件的离线数据,将数据编码后返回给所述目标IM客户端; 所述步骤D包括: 所述目标IM客户端接收所述离线数据,将最后一条离线消息内容和离线消息条数按照人员ID分类存储,并输出显示。6.根据权利要求1所述的方法,其中,在进入聊天界面时,所述步骤B包括: 所述目标頂客户端向所述通讯服务端发送最新消息请求; 所述步骤C包括: 所述通讯服务端根据所述最新消息请求查询云存储获取符合条件的最新的消息记录给所述目标頂客户端; 所述步骤D包括: 所述目标頂客户端将接收到的所述消息记录与本地存储的消息记录进行合并,更新本地存储; 所述目标頂客户端从已更新的本地存储数据中获取最新的消息记录输出显示。7.消息在不同终端漫游的系统,包括:IM客户端和通讯服务端; 所述頂客户端包括客户端通讯接口模块、客户端协议编解码模块、存储模块和UI模块; 所述通讯服务端包括服务端通讯接口模块、服务端协议编解码模块和持久化数据管理丰吴块; 所述IM客户端通过所述客户端通讯接口模块连接所述通讯服务端,向所述服务端通讯接口模块发送消息数据和数据请求,并接收所述通讯服务端返回的消息数据包; 所述客户端协议编解码模块设置为解析所述消息数据包,输出至所述存储模块存储和输出至ui 1?块显不; 所述服务端协议编码模块设置为解析和编码所述消息数据,输出至所述持久化数据管理模块存储。8.根据权利要求7所述的系统,其中,所述客户端协议编解码模块和所述服务端协议编解码模块设置为通过将消息数据根据字节数组的协议结构进行序列化和反序列化,进行消息数据的编码和解析。9.根据权利要求8所述的系统,其特征在于,所述字节数组的协议结构包括消息头和消息体,所述消息头包括消息体的字节长度和接口代码,所述消息体包括发送者ID、接收者ID、消息数据长度及消息数据内容。10.根据权利要求7所述的系统,所述数据请求包括离线消息请求和最新消息请求; 当为离线消息请求时,所述Π模块设置为根据所述离线消息请求的结果,按人员ID输出显示最后一条离线消息内容和离线消息条数; 当为最新消息请求时,所述Π模块设置为根据所述最新消息请求的结果,输出显示固定数目的云端存储的最新消息记录。
【专利摘要】本发明公开一种实现消息在不同终端漫游的方法,包括:A、通讯服务端解析接收到的消息数据并重新编码打包后存储;B、目标IM客户端向所述通讯服务端提交获取消息数据的请求;C、所述通讯服务端根据所述请求返回符合条件的消息数据包;D、所述目标IM客户端接收所述数据包,解析存储并输出显示。本发明还公开了一种消息在不同终端漫游的系统。通过本发明提供的方法和系统,无需任何设置及手动同步,就能够实现云消息在不同终端的漫游,使消息漫游更加简单方便和人性化。
【IPC分类】H04L12/58, H04L29/08
【公开号】CN104883292
【申请号】CN201510182847
【发明人】何中, 杨燕龙, 顾永新, 严伟, 戴建峰, 张龙, 石武, 朱毅
【申请人】江苏中威科技软件系统有限公司
【公开日】2015年9月2日
【申请日】2015年4月16日
转载请注明原文地址:https://www.famiwei.com/read-8136285.html