通信方法及装置、电子设备及介质与流程

文档序号:25178122发布日期:2021-05-25 14:51阅读:54来源:国知局
通信方法及装置、电子设备及介质与流程

本发明涉及通信技术领域,尤其涉及一种通信方法及装置、电子设备及介质。



背景技术:

现在一些做c/s(客户端/服务器)架构的即时通讯软件对于客户端和服务器之前的中间件尤其是网络通道的实现越来越重视,一些传统的网络通道大都采用tcp和udp协议传输,存在可靠性和长连接和短链接及传输效率问题。

因此,如何提供一种通信方案,可靠性高,易于优化使用是本领域技术人员亟待解决的技术问题。



技术实现要素:

本发明提供一种通信方法及装置、电子设备及介质,可靠性高,易于优化使用。

第一方面,本发明提供一种通信方法,包括:

中间件在启动后建立客户端与服务器的通讯通道;

所述客户端通过所述通讯通道发送心跳消息到所述服务器;

所述服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送。

进一步地,还包括:

所述中间件基于异常网络条件以及所述心跳信息判断当前网络状态;

若确定当前网络状态正常,则将当前网络状态正常的第一信息发送到所述客户端以及所述服务器;

所述服务器在接收到所述第一信息后向所述客户端进行数据推送。

进一步地,在所述中间件基于异常网络条件以及所述心跳信息判断当前网络状态之后,还包括:

若确定当前网络状态异常,则启动超时状态机进行网络修复,直到达到预设修复次数。

进一步地,所述超时状态机包括以下至少一种状态:准备期、探测期以及稳定期;

当处于所述准备期时,连续成功n次切换到探测期,每次都增加时间间隔,鲁棒控制增加b秒,若当前探测时间大于最大时间间隔maxhbtime,则探测时间取最大时间间隔;

当处于所述探测期时,连续成功m次切换到稳定期,每次都增加时间间隔,鲁棒控制增加b秒,若当前探测时间大于最大时间间隔maxhbtime,则探测时间取最大时间间隔;

当处于所述稳定期时,失败m次切换到探测期,每次都缩短探测时间,鲁棒控制减少a秒,若当前探测时间小于最小时间间隔minhbtime,则探测时间取最小时间间隔;

当处于所述探测期时,连续失败n次就切换到准备期,每次都缩短探测时间,鲁棒控制减少a秒,若当前探测时间小于最小时间间隔minhbtime,则探测时间取最小时间间隔;

其中,a、b、m以及n均为正整数。

进一步地,所述中间件基于异常网络条件以及所述心跳信息判断当前网络状态包括:

若相邻两次心跳信息的接收时间间隔超过预设时间间隔,则确定当前网络状态异常;

若相邻两次心跳信息的接收时间间隔为超过预设时间间隔,则确定当前网络状态正常;

若超过预设时间为接收到心跳信号,则确定当前网络状态异常。

进一步地,还包括:

在进入超时状态机机制进行网络修复达到预设修复次数后,所述中间件丢弃原有的通讯通道,并重新建立新的通讯通道。

进一步地,所述服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送包括:

服务器在收到心跳消息后,将需要推送的消息通过通道推送给通讯通道的通道线程;

通道线程在通过thrift的tdispatchprocessor分发服务,分发给对应的客户端接口;

将数据传给接口中的客户端回调函数以实现服务器端到客户端的数据推送。

第二方面,本发明提供一种通信装置,包括:

中间件,用于在启动后建立客户端与服务器的通讯通道;

客户端,用于通过所述通讯通道发送心跳消息到所述服务器;

服务器,用于在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送。

第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述通信方法的步骤。

第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述通信方法的步骤。

本发明提供的一种通信方法及装置、电子设备及介质,通过设置中间件在启动后建立客户端与服务器的通讯通道;客户端通过所述通讯通道发送心跳消息到所述服务器;服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送,可靠性高,易于优化使用。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种通信方法的流程图之一;

图2为本发明实施例提供的一种通信方法的超时状态机示意图;

图3为本发明实施例提供的一种通信方法的流程图至二;

图4为本发明实施例提供的一种通信方法的流程图至三;

图5为本发明实施例提供的一种通信方法的tdispatchprocessor分发机制流程图;

图6为本发明又一实施例提供的一种通信方法的客户端与服务器端交互示意图;

图7为本发明又一实施例提供的一种通信方法的客户端与服务器端交互流程图;

图8为本发明实施例提供的一种通信装置的组成结构示意图;

图9为本发明提供的电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1-图5描述本发明的通信方法。

图1为本发明实施例提供的一种通信方法的流程图之一;图2为本发明实施例提供的一种通信方法的超时状态机示意图;图3为本发明实施例提供的一种通信方法的流程图至二;图4为本发明实施例提供的一种通信方法的流程图至三;图5为本发明实施例提供的一种通信方法的tdispatchprocessor分发机制流程图。

在本发明的一种具体实施方式中,本发明实施例提供一种通信方法,包括:

步骤110:中间件在启动后建立客户端与服务器的通讯通道;

在本发明实施例中,客户端首先需要登录中间件,中间件启动后开始建立通讯通道,初始化thrift协议,初始化心跳对象也就是服务器,设置超时时间等,也就是说自动启动该通道,实现客户端和服务器的互联互通,并且需要设置一些参数,例如根据客户端发送的心跳消息计算初始心跳间隔,利用历史的失败次数或者用户输入的失败次数来,并且设置接收超时。

步骤120:所述客户端通过所述通讯通道发送心跳消息到所述服务器;

在通讯通道初始化完成后,客户端开始循环每隔预设时间发送心跳消息,此时中间件可以判断客户端与服务器是否正常通信,具体地,可以根据心跳消息是否连续,如果存在断断续续的心跳信号,则说明此时客户端与服务器端的通信连接处于弱网络状态,如果服务器接收不到心跳信号则说明处于断网状态,而如果心跳信号连续,相邻的心跳信号的时间间隔均匀且符合预设的时间间隔则说明客户端与服务器之间的通信连接健康。

步骤130:所述服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送。

在服务器在收到心跳消息后,将需要推送的消息通过通道推送给通道线程,通道线程在通过thrift的tdispatchprocessor分发服务,分发给相应的客户端接口,将数据传给接口中的客户端回调函数,实现服务器端到客户端的数据推送,例如:客户端的添加好友,邀请入群,服务器端推送的新闻消息等等消息。

具体地,在实践中,所述中间件可以基于异常网络条件以及所述心跳信息判断当前网络状态;若确定当前网络状态正常,则将当前网络状态正常的第一信息发送到所述客户端以及所述服务器;所述服务器在接收到所述第一信息后向所述客户端进行数据推送。当然,在实际中,也可能存在网络状况不佳的情况,此时若确定当前网络状态异常,则启动超时状态机进行网络修复,直到达到预设修复次数。

具体地,如图2所示,超时状态机包括以下至少一种状态:准备期、探测期以及稳定期;当处于所述准备期时,连续成功n次切换到探测期,每次都增加时间间隔,鲁棒控制增加b秒,若当前探测时间大于最大时间间隔maxhbtime,则探测时间取最大时间间隔;当处于所述探测期时,连续成功m次切换到稳定期,每次都增加时间间隔,鲁棒控制增加b秒,若当前探测时间大于最大时间间隔maxhbtime,则探测时间取最大时间间隔;当处于所述稳定期时,失败m次切换到探测期,每次都缩短探测时间,鲁棒控制减少a秒,若当前探测时间小于最小时间间隔minhbtime,则探测时间取最小时间间隔;当处于所述探测期时,连续失败n次就切换到准备期,每次都缩短探测时间,鲁棒控制减少a秒,若当前探测时间小于最小时间间隔minhbtime,则探测时间取最小时间间隔;其中,a、b、m以及n均为正整数。

更进一步地,为了实现中间件基于异常网络条件以及所述心跳信息判断当前网络状态,可以进行以下判断:

步骤210:若相邻两次心跳信息的接收时间间隔超过预设时间间隔,则确定当前网络状态异常;

步骤220:若相邻两次心跳信息的接收时间间隔为超过预设时间间隔,则确定当前网络状态正常;

步骤230:若超过预设时间为接收到心跳信号,则确定当前网络状态异常。

具体地,可以根据心跳消息是否连续,如果存在断断续续的心跳信号,则说明此时客户端与服务器端的通信连接处于弱网络状态,如果服务器接收不到心跳信号则说明处于断网状态,而如果心跳信号连续,相邻的心跳信号的时间间隔均匀且符合预设的时间间隔则说明客户端与服务器之间的通信连接比较健壮。

当然,在实践中,当客户端与服务端不能正常通信或者通信较弱时,可以使用修复的方式,但是如果一直不能正常通信,则可能是此时的通讯通道有问题,因此,可以在进入超时状态机机制进行网络修复达到预设修复次数后,所述中间件丢弃原有的通讯通道,并重新建立新的通讯通道。

在上述实施例的基础上,本实施例中,为了服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送可以进行以下步骤:

步骤310:服务器在收到心跳消息后,将需要推送的消息通过通道推送给通讯通道的通道线程;

步骤320:通道线程在通过thrift的tdispatchprocessor分发服务,分发给对应的客户端接口;

步骤330:将数据传给接口中的客户端回调函数以实现服务器端到客户端的数据推送。

如图5所示,服务器在收到心跳消息后,将需要推送的消息通过通道推送给通道线程,通道线程在通过thrift的tdispatchprocessor分发服务,分发给相应的客户端接口,将数据传给接口中的客户端回调函数,实现服务器端到客户端的数据推送,例如:客户端的添加好友,邀请入群,服务器端推送的新闻消息等等消息。

本发明实施例提供了应对于弱网或者断网情况下的修复和异常处理功能,满足客户端在弱网或者断网等极端情况下自动修复处理的需求。并且构建了异常处理和超时状态机机制,针对弱网或者断网情况下,做了修复和自动重连,实现了完全自主可控的通道系统,满足即时通讯客户端的需求,无需客户端维护,自适应弱网等极端情况,具有自动修复重连机制。

请参考图6,图7,图6为本发明又一实施例提供的一种通信方法的客户端与服务器端交互示意图;图7为本发明又一实施例提供的一种通信方法的客户端与服务器端交互流程图。

在本实施例中,即时通讯软件中客户端到服务器建立一套基于心跳消息的通讯通道,实现客户端和服务器之间的实时双向通讯,保证客户端和服务器之间保持通讯连接。即时通讯软件中通道建立后,客户端定时向服务端发送心跳请求,服务器端收到请求后,将要通知客户端的消息通过此通道逐个推送给客户端,实现即时通讯中的推送功能。通道所属线程在接收到服务器的推送后,使用thrift技术根据推送内容,调用相应的函数接口将数据推送到客户端的回调函数中。弱网或者断网等情况下,该通道技术实现了一套异常处理机制,基于thrift的异常处理机制处理通道消息传输中出现的异常,进行处理并上报客户端。出现网络传输等异常后,存在超时状态机机制,存在准备期、稳定期和探测期,根据通道连接网络的超时与否,在两者之间切换以灵敏的探测网络状态做出适时的相应处理。客户端一旦与服务器端长期断连,该技术会在异常处理过后,设置超时时间,超时后实现了一种自动重连机制,自动重启通道,重连服务器。

本发明实施例提供的通信方法,应用在在c/s互联通讯中。该方法在网络中间件的进程中实现一个线程通道,该通道使用基于thrift协议的通讯传输技术,通过向服务器端定时发送空请求的心跳消息,并设置超时时间和时间间隔等等心跳因素,实现客户端与服务器的灵活,网络灵敏度高的通讯通道。中间件启动后,便会自动启动该通道,实现客户端和服务器的互联互通,客户端发送心跳消息,服务器在收到心跳消息后,将需要推送的消息通过通道推送给通道线程,通道线程在通过thrift的tdispatchprocessor分发服务,分发给相应的客户端接口,将数据传给接口中的客户端回调函数,实现服务器端到客户端的数据推送,例如:客户端的添加好友,邀请入群,服务器端推送的新闻消息等等消息。实现了一套客户端和服务器端通讯的通道方法,具体:

1.通道线程中初始化thrift消息发送对象,循环发送心跳请求系统。

2.基于thrift的异常处理机制的异常处理系统,一旦传输中存在弱网或者断网等网络异常或者thrift应用层调用异常,会做相应的记录并推送给客户端,并且具有超时状态机机制,包括准备期、探测期和稳定期,随着网络状态和通道连接是否超时在两者之间切换。

3.一旦上述异常处理机制出现连续网络异常报错,超过一定的次数,会启动自动断线重连机制系统,重新登录,自动开启新通道并丢弃原有通道,重连服务器。

本发明实施例提供的一种通信方法,通过设置中间件在启动后建立客户端与服务器的通讯通道;客户端通过所述通讯通道发送心跳消息到所述服务器;服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送,可靠性高,易于优化使用。

下面对本发明提供的通信装置进行描述,下文描述的通信装置与上文描述的通信方法可相互对应参照。

请参考图8,图8为本发明实施例提供的一种通信装置的组成结构示意图。

在本发明又一实施例中,本发明实施例提供一种通信装置800,包括:

中间件810,用于在启动后建立客户端与服务器的通讯通道;

客户端820,用于通过所述通讯通道发送心跳消息到所述服务器;

服务器830,用于在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送。

图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(communicationsinterface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行上述任一实施例中的通信方法,该方法包括:中间件在启动后建立客户端与服务器的通讯通道;所述客户端通过所述通讯通道发送心跳消息到所述服务器;所述服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送。

此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的上述任一实施例中的通信方法,该方法包括:中间件在启动后建立客户端与服务器的通讯通道;所述客户端通过所述通讯通道发送心跳消息到所述服务器;所述服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的上述任一实施例中的通信方法,该方法包括:中间件在启动后建立客户端与服务器的通讯通道;所述客户端通过所述通讯通道发送心跳消息到所述服务器;所述服务器在接收到心跳消息后通过所述通讯通道向所述客户端进行数据推送。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1