已读回执发送方法、装置及计算机可读存储介质与流程

文档序号:19749648发布日期:2020-01-21 19:11阅读:265来源:国知局
已读回执发送方法、装置及计算机可读存储介质与流程

本发明涉及通信技术领域,尤其涉及已读回执发送方法、装置及计算机可读存储介质。



背景技术:

目前,大部分即时通讯消息发送流程为:1、客户端将待发送消息加入消息发送队列(为了保证不阻塞用户线程,往往需要设计消息发送队列);2、发送线程从消息发送队列的队首取出消息并发送至服务端,阻塞线程等待服务端回复该消息的ack(acknowledgement,即确认字符);3、服务端收到该消息,并向客户端回复该消息的ack;4、客户端接收到该ack;5、发送线程取消阻塞,进行下一条消息的处理。

但是,在目前的群组通讯中,几十个甚至上百个客户端(客户端b~客户端n)同时发送消息,客户端a收到消息需要回复已读回执,便需要向服务端发送大量的已读回执。依照上述消息发送流程,若客户端a同时需要发送通讯消息,消息发送队列中便会存在大量的待发送消息(包括已读回执以及用户需要发送的通讯消息),由于消息会标识发送时间和超时事件,处在消息发送队列后面的待发送消息往往无法及时发送,最终导致超时。例如,若用户需要发送的通讯消息处于消息发送队列后面,便可能出现发送超时的情况,导致通讯消息无法即时发送。

为了解决这一问题,目前的做法是降低已读回执的优先级,即先发送用户需要发送的通讯信息,然后再发送已读回执,这样会降低用户体验(用户无法第一时间知道自己发送的消息是否被对方阅读);或是仅发送消息x(最新接收到的信息)的已读回执,已读回执的接收端接收到该回执后,便认为消息x之前的消息均已读,由于移动设备屏幕小的局限性,发送已读回执的客户端(即接收消息x的客户端)屏幕仅显示最新的消息,其实很多消息并未真正阅读,导致已读回执的接收端对已发送消息的已读状态的判断出现错误。



技术实现要素:

鉴于上述现有技术中存在的技术问题,本发明提供一种已读回执发送方法、装置及计算机可读存储介质。

本发明提供一种已读回执发送方法,所述已读回执发送方法包括以下步骤:

获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包;

将所述已读回执包发送至服务端;

接收服务端基于所述已读回执包反馈的确认字符包;

根据所述确认字符包,得到所述已读回执包的发送结果。

可选的,所述获取当前待发送的已读回执的步骤包括:

当检测到信息状态由未读变更为已读时,获取所述信息的已读回执,得到当前待发送的已读回执。

可选的,所述获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包的步骤包括:

获取当前待发送的已读回执,检测当前待发送的已读回执的数量是否达到预设阈值;

若当前待发送的已读回执的数量达到预设阈值,则对当前待发送的已读回执进行打包处理,得到已读回执包。

可选的,所述根据所述确认字符包,得到所述已读回执包的发送结果的步骤包括:

检测所述确认字符包中确认字符的数量,是否与已读回执包中已读回执的数量相同;

若所述确认字符包中确认字符的数量,与已读回执包中已读回执的数量相同,则确认所述已读回执包发送成功。

可选的,所述检测所述确认字符包中确认字符的数量,是否与已读回执包中已读回执的数量相同之后,还包括:

若所述确认字符包中确认字符的数量,小于已读回执包中已读回执的数量,则获取不对应有确认字符的第一类已读回执,并确认所述第一类已读回执发送失败。

可选的,所述确认所述第一类已读回执发送失败之后,还包括:

将所述第一类已读回执标记为待发送的已读回执,并执行获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包的步骤。

此外,为实现上述目的,本发明还提供一种已读回执发送装置,所述已读回执发送装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的已读回执发送程序,所述已读回执发送程序被所述处理器执行时实现如上所述的已读回执发送方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有已读回执发送程序,所述已读回执发送程序被处理器执行时实现如上所述的已读回执发送方法的步骤。

本发明中,获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包;将所述已读回执包发送至服务端;接收服务端基于所述已读回执包反馈的确认字符包;根据所述确认字符包,得到所述已读回执包的发送结果。通过本发明,当存在多条已读回执需要发送时,以打包的形式,一次可向服务端发送多条已读回执,减少了等待服务端回复ack的时间,缩短了发送已读回执所需的时间,提高了已读回执的发送效率。

附图说明

图1为本发明实施例方案涉及的硬件运行环境的已读回执发送装置结构示意图;

图2为本发明已读回执发送方法第一实施例的流程示意图;

图3为本发明已读回执发送方法一实施例中发送队列的示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1为本发明实施例方案涉及的硬件运行环境的已读回执发送装置结构示意图。

本发明实施例已读回执发送装置可以是pc,也可以是智能手机、平板电脑、便携计算机等终端设备。

如图1所示,该已读回执发送装置可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的已读回执发送装置结构并不构成对已读回执发送装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及已读回执发送程序。

在图1所示的已读回执发送装置中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的已读回执发送程序,并执行以下操作:

获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包;

将所述已读回执包发送至服务端;

接收服务端基于所述已读回执包反馈的确认字符包;

根据所述确认字符包,得到所述已读回执包的发送结果。

进一步地,处理器1001可以调用存储器1005中存储的已读回执发送程序,还执行以下操作:

当检测到信息状态由未读变更为已读时,获取所述信息的已读回执,得到当前待发送的已读回执。

进一步地,处理器1001可以调用存储器1005中存储的已读回执发送程序,还执行以下操作:

获取当前待发送的已读回执,检测当前待发送的已读回执的数量是否达到预设阈值;

若当前待发送的已读回执的数量达到预设阈值,则对当前待发送的已读回执进行打包处理,得到已读回执包。

进一步地,处理器1001可以调用存储器1005中存储的已读回执发送程序,还执行以下操作:

检测所述确认字符包中确认字符的数量,是否与已读回执包中已读回执的数量相同;

若所述确认字符包中确认字符的数量,与已读回执包中已读回执的数量相同,则确认所述已读回执包发送成功。

进一步地,处理器1001可以调用存储器1005中存储的已读回执发送程序,还执行以下操作:

若所述确认字符包中确认字符的数量,小于已读回执包中已读回执的数量,则获取不对应有确认字符的第一类已读回执,并确认所述第一类已读回执发送失败。

进一步地,处理器1001可以调用存储器1005中存储的已读回执发送程序,还执行以下操作:

将所述第一类已读回执标记为待发送的已读回执,并执行获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包的步骤。

参照图2,图2为本发明已读回执发送方法第一实施例的流程示意图。

在一实施例中,已读回执发送方法包括:

步骤s10,获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包;

本实施例中,当客户端(即已读回执发送装置)收到新消息并显示时,该新消息的状态便由未读状态变更为已读状态。在一群组通讯中,会出现几十甚至上百人同时发生消息,对于消息接收端(以客户端a为例)而言,若这些消息在客户端a的显示界面上显示,则客户端a需要回复这些消息对应的已读回执给服务器。

本发明一实施例中,若客户端a检测到50条新消息的状态由未读状态变更为已读状态,则需要向服务器回复这50条新消息对应的已读回执。客户端a将这50条新消息的已读回执添加进发送队列。参照图3,图3为本发明已读回执发送方法一实施例中发送队列的示意图。如图3所示,根据新消息发生状态变更的时间先后顺序,依次将对应的已读回执添加进发送队列中。已读回执1对应的新消息发生状态变更的时间早于已读回执2对应的新消息发生状态变更的时间,已读回执2对应的新消息发生状态变更的时间早于已读回执3对应的新消息发生状态变更的时间,以此类推,已读回执48对应的新消息发生状态变更的时间早于已读回执49对应的新消息发生状态变更的时间已读回执49对应的新消息发生状态变更的时间早于已读回执50对应的新消息发生状态变更的时间。

本发明一实施例中,当待发送的已读回执被全部添加进发送队列后,便通知发送线程开始后续的已读回执发送动作。发送线程接收到通知后,便从发送队列中按照由上到下的顺序,依次获取x条(x根据实际情况进行设置,在此不作限制)已读回执,将获取的x条已读回执进行打包处理,得到已读回执包,已读回执包中便可包含x条已读回执。在一可选实施例中,当待发送的已读回执有50条时,将这50条已读回执均添加进发送队列中,发送线程从发送队列中,按照由上到下的顺序,依次获取20条已读回执,对获取的已读回执1至已读回执20进行打包处理,得到已读回执包1,然后按照同样的步骤,获取已读回执21至已读回执40,对获取的已读回执21至已读回执40进行打包处理,得到已读回执包2,然后继续获取已读回执,当由已读回执41获取到已读回执50时,由于后续不存在已读回执了,便对已读回执41至已读回执50进行打包处理,得到已读回执包3。本实施例中,打包处理得到已读回执包的实现手段可以是是根据预先定义的协议,将单条已读回执作为一个集合存入已读回执包中,然后将已读回执包序列化为二进制。

步骤s20,将所述已读回执包发送至服务端;

步骤s30,接收服务端基于所述已读回执包反馈的确认字符包;

本实施例中,客户端a得到已读回执包后,便将已读回执包发送至服务端,服务端接收到已读回执包,确定接收到的已读回执包中包含的已读回执,回复对应的ack。ack(acknowledgement)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符,表示发来的数据已确认接收无误。本实施例中,对需要回复的ack进行打包处理,得到ack包,然后将ack包反馈至该客户端a。在一实施例中,若服务端收到了已读回执包,且接收到的已读回执包中包含已读回执1~50,则需要回复已读回执1~50对应的ack1~50,便将ack1~50进行打包处理,得到确认字符包,并将确认字符包发送至客户端a。

本实施例中,服务端对需要回复的ack进行打包处理的过程,与客服端对待发送的已读回执进行打包处理的过程类似。一实施例中,若需要回复的ack有50条,可以是以y(y的具体数值根据实际需要进行设置,在此不作限制)条为一组,然后进行打包处理,得到确认字符包。例如,将y设置为20,则对ack1~20进行打包处理,得到确认字符包1,对ack21~40进行打包处理,得到确认字符包2,ack41~50进行打包处理,得到确认字符包3,并将确认字符包1~3发送至客户端a。

步骤s40,根据所述确认字符包,得到所述已读回执包的发送结果。

本实施例中,客户端接收到服务端基于已读回执包反馈的确认字符包后,首先检测确认字符包中包含的确认字符的数量,是否与客户端发送的已读回执包中包含的已读回执的数量相同,若两者相同,则说明当前待发送的已读回执已经发送成功,便可将待发送的已读回执从发送队列中移除。

本发明一可选实施例中,若检测到确认字符包中包含的确认字符的数量,小于客户端发送的已读回执包中包含的已读回执的数量,即未接收到部分已发送的已读回执对应的确认字符,例如,未接收到已读回执41至已读回执50对应的确认字符,则说明已读回执41至已读回执50未发送成功,便可将已读回执1至已读回执40从发送队列中移除,将已读回执41至已读回执50仍保留在发送队列中,等待下次发送。

本实施例中,获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包;将所述已读回执包发送至服务端;接收服务端基于所述已读回执包反馈的确认字符包;根据所述确认字符包,得到所述已读回执包的发送结果。通过本实施例,当存在多条已读回执需要发送时,以打包的形式,一次可向服务端发送多条已读回执,减少了等待服务端回复ack的时间,缩短了发送已读回执所需的时间,提高了已读回执的发送效率。

进一步的,本发明已读回执发送方法一实施例中,所述获取当前待发送的已读回执的步骤包括:

当检测到信息状态由未读变更为已读时,获取所述信息的已读回执,得到当前待发送的已读回执。

本实施例中,当客户端(即已读回执发送装置)收到新消息并显示时,该新消息的状态便由未读状态变更为已读状态。在一群组通讯中,会出现几十甚至上百人同时发生消息,对于消息接收端(以客户端a为例)而言,若这些消息在客户端a的显示界面上显示,则客户端a需要回复这些消息对应的已读回执给服务器。

本实施例中,根据信息是否在客户端的显示界面上显示来判断该信息是否由未读状态变更为已读状态,当该信息由未读状态变更为已读状态时,执行后续向服务端发送该信息的已读回执的步骤。通过本实施例,提高了已读回执的真实性,使得即时通讯的双方接收到的已读回执更加符合实际,提高了用户体验。

进一步的,本发明已读回执发送方法一实施例中,步骤s10包括:

获取当前待发送的已读回执,检测当前待发送的已读回执的数量是否达到预设阈值;

若当前待发送的已读回执的数量达到预设阈值,则对当前待发送的已读回执进行打包处理,得到已读回执包。

本实施例中,获取到当前待发送的已读回执时,首先检测当前待发送的已读回执的数量是否达到预设阈值(该预设阈值根据实际情况进行设置,在此不作限制),若当前待发送的已读回执的数量达到预设阈值,则对当前待发送的已读回执进行打包处理,得到已读回执包。本实施例中,对当前待发送的已读回执进行打包处理的实施例与步骤s10的实施例一致,在此不做赘述。

本实施例中,若当前待发送的已读回执的数量比较少,则按照现有的即时通讯消息发送流程进行处理:1、客户端将待发送消息加入消息发送队列(为了保证不阻塞用户线程,往往需要设计消息发送队列);2、发送线程从消息发送队列的队首取出消息并发送至服务端,阻塞线程等待服务端回复该消息的ack(acknowledgement,即确认字符);3、服务端收到该消息,并向客户端回复该消息的ack;4、客户端接收到该ack;5、发送线程取消阻塞,进行下一条消息的处理。

若当前待发送的已读回执的数量达到预设阈值,即当前待发送的已读回执的数量较多时,以打包的形式,一次可向服务端发送多条已读回执,减少了等待服务端回复ack的时间,缩短了发送已读回执所需的时间,提高了已读回执的发送效率。

进一步的,本发明已读回执发送方法一实施例中,步骤s40包括:

检测所述确认字符包中确认字符的数量,是否与已读回执包中已读回执的数量相同;

若所述确认字符包中确认字符的数量,与已读回执包中已读回执的数量相同,则确认所述已读回执包发送成功。

本实施例中,客户端接收到服务端基于已读回执包反馈的确认字符包后,首先检测确认字符包中包含的确认字符的数量,是否与客户端发送的已读回执包中包含的已读回执的数量相同,若两者相同,则说明当前待发送的已读回执已经发送成功,便可将待发送的已读回执从发送队列中移除。

本实施例中,若确认字符包中包含的确认字符的数量,与客户端发送的已读回执包中包含的已读回执的数量相同,则说明当前待发送的已读回执已经发送成功,便可将待发送的已读回执从发送队列中移除,可避免已发送成功的已读回执重复发送。

进一步的,本发明已读回执发送方法一实施例中,所述检测所述确认字符包中确认字符的数量,是否与已读回执包中已读回执的数量相同之后,还包括:

若所述确认字符包中确认字符的数量,小于已读回执包中已读回执的数量,则获取不对应有确认字符的第一类已读回执,并确认所述第一类已读回执发送失败。

本发明一可选实施例中,若检测到确认字符包中包含的确认字符的数量,小于客户端发送的已读回执包中包含的已读回执的数量,即未接收到部分已发送的已读回执对应的确认字符,例如,未接收到已读回执41至已读回执50(即第一类已读回执)对应的确认字符,则说明已读回执41至已读回执50未发送成功,便可将已读回执1至已读回执40从发送队列中移除,将已读回执41至已读回执50仍保留在发送队列中,等待下次发送。

进一步的,本发明已读回执发送方法一实施例中,所述确认所述第一类已读回执发送失败之后,还包括:

将所述第一类已读回执标记为待发送的已读回执,并执行获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包的步骤。

本实施例中,将第一类已读回执标记为待发送的已读回执,当达到下一发送时间时,将第一类已读回执以及根据步骤s10获取的待发送的已读回执,一起作为待发送的已读回执,然后执行对所述已读回执进行打包处理,得到已读回执包;将所述已读回执包发送至服务端;接收服务端基于所述已读回执包反馈的确认字符包;根据所述确认字符包,得到所述已读回执包的发送结果的步骤。

本实施例中,若部分已读回执发送失败,则将这部分已读回执标记为待发送的已读回执,在时间点达到下一发送时间点时,将这部分已读回执与根据步骤s10获取的待发送的已读回执,一起作为待发送的已读回执,然后执行后续的已读回执发送步骤,通过重发的方式保证了发送失败的已读回执不会被漏发。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有已读回执发送程序,所述已读回执发送程序被处理器执行时实现如下步骤:

获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包;

将所述已读回执包发送至服务端;

接收服务端基于所述已读回执包反馈的确认字符包;

根据所述确认字符包,得到所述已读回执包的发送结果。

所述已读回执发送程序被处理器执行时还实现如下步骤:

当检测到信息状态由未读变更为已读时,获取所述信息的已读回执,得到当前待发送的已读回执。

所述已读回执发送程序被处理器执行时还实现如下步骤:

获取当前待发送的已读回执,检测当前待发送的已读回执的数量是否达到预设阈值;

若当前待发送的已读回执的数量达到预设阈值,则对当前待发送的已读回执进行打包处理,得到已读回执包。

所述已读回执发送程序被处理器执行时还实现如下步骤:

检测所述确认字符包中确认字符的数量,是否与已读回执包中已读回执的数量相同;

若所述确认字符包中确认字符的数量,与已读回执包中已读回执的数量相同,则确认所述已读回执包发送成功。

所述已读回执发送程序被处理器执行时还实现如下步骤:

若所述确认字符包中确认字符的数量,小于已读回执包中已读回执的数量,则获取不对应有确认字符的第一类已读回执,并确认所述第一类已读回执发送失败。

所述已读回执发送程序被处理器执行时还实现如下步骤:

将所述第一类已读回执标记为待发送的已读回执,并执行获取当前待发送的已读回执,对所述已读回执进行打包处理,得到已读回执包的步骤。

本发明计算机可读存储介质的具体实施例与上述已读回执发送方法的各个实施例基本相同,在此不做赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

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

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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