CN112671636A - 群组消息推送方法、装置、计算机设备和存储介质 - Google Patents
群组消息推送方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112671636A CN112671636A CN202011567312.2A CN202011567312A CN112671636A CN 112671636 A CN112671636 A CN 112671636A CN 202011567312 A CN202011567312 A CN 202011567312A CN 112671636 A CN112671636 A CN 112671636A
- Authority
- CN
- China
- Prior art keywords
- group
- message
- offline
- group message
- sequence number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本申请涉及一种群组消息推送方法、装置、计算机设备和存储介质。所述方法包括:将待推送的群组消息与相应的群组进行关联存储;针对所述群组中处于在线状态的第一群组成员,向在线状态的第一群组成员所使用的终端推送所述群组消息;针对所述群组中处于离线状态的第二群组成员,在第二群组成员上线后,接收所述第二群组成员所使用的终端所发送至的消息获取请求;响应于所述消息获取请求,获取与所述第二群组成员所属群组关联存储的离线群组消息;所述离线群组消息,是在所述第二群组成员处于离线状态期间,与所述第二群组成员所属群组关联存储的群组消息;向所述第二群组成员所使用的终端推送所述离线群组消息。采用本方法能够节省数据存储空间。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种群组消息推送方法、装置、计算机设备和存储介质。
背景技术
随着科学技术的发展,各种即时通信应用或软件被广泛使用,比如:微信、QQ或企业微信等。由于即时通信应用或软件中的一个群组中往往有非常多的群组成员,一条群组消息需要被推送至群组中每一个群组成员的终端,因此,在群组消息推送过程中数据量比较大,如何节省数据存储空间是一个比较重要的问题。
传统方法中,一般当一条消息被发送到一个群组上时,消息会被分别复制并保存到每个群组成员的mailbox(一种针对具体群组成员的独立存储空间)中,对于在线状态的群组成员,会直接推送消息至该群组成员所使用的终端,对于离线状态的群组成员,则会等到群组成员上线后,再主动地将该群组成员的mailbox中存储的消息进行推送。然而,这种方法群组成员越多,所需存储的冗余数据就越多,数据存储成本很大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够节省数据存储空间的群组消息推送方法、装置、计算机设备和存储介质。
一种群组消息推送方法,所述方法包括:
将待推送的群组消息与相应的群组进行关联存储;
针对所述群组中处于在线状态的第一群组成员,向所述在线状态的第一群组成员所使用的终端推送所述群组消息;
针对所述群组中处于离线状态的第二群组成员,在所述第二群组成员上线后,接收所述第二群组成员所使用的终端所发送至的消息获取请求;
响应于所述消息获取请求,获取与所述第二群组成员所属群组关联存储的离线群组消息;所述离线群组消息,是在所述第二群组成员处于离线状态期间,与所述第二群组成员所属群组关联存储的群组消息;
向所述第二群组成员所使用的终端推送所述离线群组消息。
在其中一个实施例中,所述将待推送的群组消息与相应的群组进行关联存储包括:
生成所述群组消息的标识,并将所述群组消息和所述群组消息的标识关联存储至群组消息表中;
将所述群组消息的标识与相应的群组的标识关联写入关联表中;
所述获取与所述第二群组成员所属群组关联存储的离线群组消息包括:
根据所述关联表,确定与所述第二群组成员所属群组的标识相关联的离线群组消息的标识;
根据所述离线群组消息的标识,从所述群组消息表中获取所述离线群组消息。
在其中一个实施例中,所述根据所述关联表,确定与所述第二群组成员所属群组的标识相关联的离线群组消息的标识包括:
根据所述第二群组成员的个人群组列表,确定所述第二群组成员所属群组的标识;
根据所述关联表,确定与所述第二群组成员所属群组的标识相关联的群组消息的标识;
将所述相关联的群组消息的标识与所述第二群组成员的离线前的群组消息的标识进行比对,确定与所述第二群组成员所属群组的标识相关联的离线群组消息的标识。
在其中一个实施例中,向群组成员所使用的终端推送群组消息的步骤包括:
与群组成员所使用的终端建立会话通道;
为所述会话通道中待推送的群组消息生成序列号;
将所述群组消息与相应的所述序列号关联存储至缓存区中;
向所述终端推送携带所关联的序列号的所述群组消息;
所述方法还包括:
若接收到所述终端返回的携带所述序列号的接收反馈信息,则在所述缓存区中对应清除所述序列号、以及与所述序列号关联存储的所述群组消息。
在其中一个实施例中,在所述向所述终端推送携带所关联的序列号的所述群组消息之后,所述方法还包括:
若在第一预设时长内,未接收到所述终端返回的携带所述序列号的接收反馈信息,则从所述缓存区中获取与所述序列号关联存储的所述群组消息;
重新向所述终端推送携带所述序列号的所述群组消息。
在其中一个实施例中,在所述向所述终端推送携带所关联的序列号的所述群组消息之后,所述方法还包括:
接收所述终端发送至的重新推送请求;所述重新推送请求,是在所述终端检测到存在遗漏的序列号、且在第二预设时长内未接收到携带所述遗漏的序列号的群组消息时,发送的用于请求重新推送所述遗漏的序列号对应的群组消息的请求;
确定所述重新推送请求所指示的序列号,并从所述缓存区中获取与所指示的序列号关联存储的群组消息;
重新向所述终端推送与所指示的序列号关联存储的所述群组消息。
在其中一个实施例中,所述群组消息为企业团体的即时通信群组消息;所述群组为所述企业团体的即时通信群组;所述第二群组成员所属群组,是所述第二群组成员所加入的所述企业团体的即时通信群组;
所述接收所述第二群组成员所使用的终端所发送至的消息获取请求包括:
接收所述第二群组成员所使用的终端基于企业团体即时通信应用发送至的消息获取请求。
一种群组消息推送装置,所述装置包括:
关联模块,用于将待推送的群组消息与相应的群组进行关联存储;
消息推送模块,用于针对所述群组中处于在线状态的第一群组成员,向所述在线状态的第一群组成员所使用的终端推送所述群组消息;
接收模块,用于针对所述群组中处于离线状态的第二群组成员,在所述第二群组成员上线后,接收所述第二群组成员所使用的终端所发送至的消息获取请求;
离线消息确定模块,用于响应于所述消息获取请求,获取与所述第二群组成员所属群组关联存储的离线群组消息;所述离线群组消息,是在所述第二群组成员处于离线状态期间,与所述第二群组成员所属群组关联存储的群组消息;
消息推送模块,还用于向所述第二群组成员所使用的终端推送所述离线群组消息。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行本申请各实施例所述的群组消息推送方法中的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行本申请各实施例所述的群组消息推送方法中的步骤。
上述群组消息推送方法、装置、计算机设备和存储介质,将待推送的群组消息与相应的群组进行关联存储,针对群组中处于在线状态的第一群组成员,直接向在线状态的第一群组成员所使用的终端推送群组消息,针对群组中处于离线状态的第二群组成员,则在第二群组成员上线后,接收第二群组成员所使用的终端主动发送至的消息获取请求,然后响应于消息获取请求,获取与第二群组成员所属群组关联存储的离线群组消息,向第二群组成员所使用的终端推送离线群组消息。这样无需分别为每一个群组成员分别存储一份群组消息,而是只需存储一份群组消息,大大节省了数据存储空间。
附图说明
图1为一个实施例中群组消息推送方法的应用环境图;
图2为一个实施例中群组消息推送方法的流程示意图;
图3为一个实施例中群组消息推送方法的流程示意图;
图4为传统的群组消息推送方法的流程示意图;
图5为一个实施例中消息推送成功的流程示意图;
图6为一个实施例中服务器超时未接收到反馈并重新推送的流程示意图;
图7为一个实施例中终端超时未接收到消息请求重新推送的流程示意图;
图8为一个实施例中群组消息推送装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的群组消息推送方法,可以应用于如图1所示的应用环境中。其中,消息发送端102通过网络与服务器104进行通信,消息接收端106通过网络与服务器104进行通信。可以理解,消息发送端102和消息接收端106为同一个群组中的群组成员所使用的终端。消息发送端102和消息接收端106均为多个(即一个群组中有多个群组成员)。任意一个消息发送端102可以向服务器104发送群组消息推送请求,服务器104可以将群组消息推送请求所请求推送的群组消息推送至各个消息接收端106。其中,消息发送端102和消息接收端106均可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种群组消息推送方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
S202,将待推送的群组消息与相应的群组进行关联存储。
其中,群组,是即时通信工具中的由多个群组成员组成的、且用于进行多人聊天会话的群组实体。群组成员,是群组中的成员,即,即时通信工具中的个体用户加入到群组中即为群组成员。群组消息,是群组中的聊天会话消息。待推送的群组消息,是需要推送至群组成员所使用的终端的群组消息。
可以理解,群组成员可以通过所使用的终端基于即时通信工具在群组中进行多人聊天会话,以发送群组消息和接收群组中的其他群组成员发送的群组消息。可以理解,在群组成员通过所使用的终端发送群组消息时,该终端可以理解为图1中的消息发送端,在群组成员通过所使用的终端接收群组消息时,该终端可以理解为图1中的消息接收端。
在一个实施例中,即时通信工具可以包括即时通信应用(即,即时通信app)、即时通信软件、即时通信客户端和即时通信系统等中的至少一种。
在一个实施例中,即时通信工具可以为日常交际类的即时通信工具,比如:QQ或微信等,也可以为企业办公类的即时通信工具,比如:企业微信、钉钉或云之家等。
具体地,任意一个群组成员可以通过所使用的终端(此时即为消息发送端)基于即时通信工具在群组中发送群组消息,消息发送端可以生成并发送消息推送请求至服务器。服务器可以响应于消息推送请求,将消息推送请求所请求推送的待推送的群组消息与相应的群组进行关联存储。
在一个实施例中,服务器可以预先根据群组的属性信息建立群组信息表,在接收到消息推送请求后,服务器可以将待推送的群组消息存储至群组消息表中,并将待推送的群组消息与相应的群组之间的关联关系写入关联表中,以实现将待推送的群组消息与相应的群组进行关联存储。
其中,群组信息表,是用于存储各个群组的属性信息的数据表。群组消息表,是用于存储待推送的群组消息的数据表。关联表,是用于存储待推送的群组消息与群组之间的关联关系的数据表。
S204,针对群组中处于在线状态的第一群组成员,向在线状态的第一群组成员所使用的终端推送群组消息。
其中,第一群组成员,是指在将待推送的群组消息与相应的群组进行关联存储完成时,群组中处于在线状态的群组成员。第一群组成员为至少一个。
具体地,在将待推送的群组消息与相应的群组进行关联存储完成时,服务器可以检测该群组中的各个群组成员的状态(即在线还是离线),针对群组中处于在线状态的第一群组成员,服务器直接向在线状态的第一群组成员所使用的终端推送待推送的群组消息。
可以理解,群组成员的状态为在线或离线,是指群组成员在即时通信工具中的状态是在线或离线,即,群组成员是否登录即时通信工具。
在一个实施例中,服务器可以先根据预先建立的群组成员表,确定与待推送的消息关联存储的群组中的群组成员,然后可以检测该群组中的各个群组成员的状态(即在线还是离线)。其中,群组成员表,是用于存储群组中的群组成员的信息的数据表。
在一个实施例中,服务器可以通过长链接通道将群组消息推送至在线状态的群组成员所使用的终端。
S206,针对群组中处于离线状态的第二群组成员,在第二群组成员上线后,接收第二群组成员所使用的终端所发送至的消息获取请求。
其中,第二群组成员,是指在将待推送的群组消息与相应的群组进行关联存储完成时,群组中处于离线状态的群组成员。第二群组成员为至少一个。消息获取请求,是第二群组成员所使用的终端在上线后主动发送至服务器的、且用于获取离线群组消息的请求。
具体地,在将待推送的群组消息与相应的群组进行关联存储完成时,服务器可以检测该群组中的各个群组成员的状态(即在线还是离线),针对群组中处于离线状态的第二群组成员,服务器可以先不做处理,直至第二群组成员上线后,服务器可以接收第二群组成员所使用的终端所主动发送至的消息获取请求。
在一个实施例中,第二群组成员所使用的终端可以在第二群组成员上线后,主动向服务器发送消息获取请求,以获取第二群组成员所属的全部的群组的离线群组消息。
在另一个实施例中,第二群组成员所使用的终端可以在第二群组成员上线后,若第二群组成员打开某一个群组,则主动向服务器发送消息获取请求,以获取所打开的群组的离线群组消息。
S208,响应于消息获取请求,获取与第二群组成员所属群组关联存储的离线群组消息;离线群组消息,是在第二群组成员处于离线状态期间,与第二群组成员所属群组关联存储的群组消息。
可以理解,在第二群组成员处于离线状态期间,若第二群组成员所属群组中的其他群组成员仍然在进行聊天会话,则仍会产生群组消息,在此期间产生的群组消息,则为离线群组消息,第二群组成员在上线后才可以接收到离线群组消息。
在一个实施例中,服务器可以根据消息获取请求,确定第二群组成员。然后,服务器可以根据第二群组成员的个人群组列表,确定第二群组成员所属的群组,再根据关联表,确定与第二群组成员所属的群组关联存储的群组消息,再从中确定与第二群组成员所属的群组关联存储的离线群组消息。
在一个实施例中,服务器可以通过热数据缓存的方式简化和加快对数据表的查询速度,进而提高消息推送效率。
S210,向第二群组成员所使用的终端推送离线群组消息。
具体地,服务器可以响应于消息获取请求,向第二群组成员所使用的终端推送离线群组消息。
如图3所示,为本申请各实施例中的群组消息推送方法的流程示意图。服务器可以将群组消息和群组进行关联存储,如图3中群组a的群组消息都与群组a关联存储,因为群组a中的群组成员A和群组成员B均在线,所以服务器可以直接将群组a的群组消息分别推送至群组成员A和群组成员B所使用的终端,而由于群组a中的群组成员C为离线状态,所以等到群组成员C刚上线后,群组成员C所使用的终端主动向服务器发送消息获取请求,以获取群组a的离线群组消息,终端主动向服务器请求获取消息的过程可以理解为图3中的“拉”。
上述群组消息推送方法中,将待推送的群组消息与相应的群组进行关联存储,针对群组中处于在线状态的第一群组成员,直接向在线状态的第一群组成员所使用的终端推送群组消息,针对群组中处于离线状态的第二群组成员,则在第二群组成员上线后,接收第二群组成员所使用的终端主动发送至的消息获取请求,然后响应于消息获取请求,获取与第二群组成员所属群组关联存储的离线群组消息,向第二群组成员所使用的终端推送离线群组消息。这样无需像如图4所示的方法那样分别为每一个群组成员存储一份群组消息至该群组成员mailbox中,而是将群组消息与群组进行关联,只需存储一份群组消息,大大节省了数据存储空间。此外,缓存数据也是关联群组,而不是关联群组成员,同一群组的群组成员共用一份缓存数据,节省了缓存数据所占用的资源。并且,区别于每一个群组成员的mailbox均写入成功之后才算发送成功的方法,本申请的方法将数据写入所关联的群组即写入成功,大大简化了数据写入流程。
在一个实施例中,将待推送的群组消息与相应的群组进行关联存储包括:生成群组消息的标识,并将群组消息和群组消息的标识关联存储至群组消息表中;将群组消息的标识与相应的群组的标识关联写入关联表中。获取与第二群组成员所属群组关联存储的离线群组消息包括:根据关联表,确定与第二群组成员所属群组的标识相关联的离线群组消息的标识;根据离线群组消息的标识,从群组消息表中获取离线群组消息。
其中,群组消息的标识,用于唯一标识待推送的群组消息。
具体地,服务器可以预先建立群组信息表,为各个群组生成群组的标识,并将各个群组的标识与相应群组的属性信息关联存储至群组信息表中,以完成群组的存储。服务器在接收到消息推送请求后,可以为消息推送请求所请求推送的待推送的群组消息生成群组消息的标识,并将待推送的群组消息与相应的群组消息的标识关联存储至群组消息表中,以完成待推送的群组消息的存储。服务器可以将群组消息的标识与相应的群组的标识关联写入关联表中,从而实现了待推送的群组消息与相应的群组进行关联存储。
在一个实施例中,若消息获取请求是针对第二群组成员所属的各个群组的离线群组消息,则服务器可以根据关联表,确定与第二群组成员所属的各个群组的标识相关联的离线群组消息的标识,然后根据离线群组消息的标识,从群组消息表中获取相应的离线群组消息。
在另一个实施例中,若消息获取请求是针对第二群组成员在即时通信工具中所打开的某一个群组的离线群组消息,则服务器可以根据关联表,确定与该群组的标识相关联的离线群组消息的标识,然后根据离线群组消息的标识,从群组消息表中获取相应的离线群组消息。
本实施例中,服务器通过将群组消息的标识与相应的群组的标识关联写入关联表中,并分别将群组消息和群组进行存储,实现了待推送的群组消息和群组的关联存储,从而无需分别为每一个群组成员分别存储一份群组消息,而是只需存储一份群组消息,大大节省了数据存储空间。
在一个实施例中,根据关联表,确定与第二群组成员所属群组的标识相关联的离线群组消息的标识包括:根据第二群组成员的个人群组列表,确定第二群组成员所属群组的标识;根据关联表,确定与第二群组成员所属群组的标识相关联的群组消息的标识;将相关联的群组消息的标识与第二群组成员的离线前的群组消息的标识进行比对,确定与第二群组成员所属群组的标识相关联的离线群组消息的标识。
在一个实施例中,若消息获取请求是针对第二群组成员所属的各个群组的离线群组消息,则第二群组成员所使用的终端发送的消息获取请求中可以包含第二群组成员在离线之前接收到的各个群组中的最后一条群组消息的标识,则服务器可以根据第二群组成员的个人群组列表,确定第二群组成员所属的各个群组的标识,然后根据关联表,确定与第二群组成员所属群组的标识相关联的群组消息的标识。服务器可以将相关联的群组消息的标识与第二群组成员在离线之前接收到的各个群组中的最后一条群组消息的标识进行比对,确定与第二群组成员所属群组的标识相关联的离线群组消息的标识。
在另一个实施例中,若消息获取请求是针对第二群组成员在即时通信工具中所打开的某一个群组的离线群组消息,则第二群组成员所使用的终端发送的消息获取请求中可以包含所打开的群组在离线之前接收到的最后一条群组消息的标识,则服务器可以根据关联表确定与该群组的标识相关联的群组消息的标识,然后将相关联的群组消息的标识与所打开的群组在离线之前接收到的最后一条群组消息的标识进行比对,确定与该群组的标识相关联的离线群组消息的标识。
可以理解,群组消息的标识排在离线之前接收到的最后一条群组消息的标识之后的群组消息,即为离线群组消息。
本实施例中,服务器可以根据个人群组列表,确定第二群组成员所属群组,并通过群组消息的标识的比对,确定离线群组消息,从而能够准确地确定待推送的离线群组消息,这样无需为分别为每一个群组成员分别存储一份群组消息,即可准确地确定第二群组成员的离线群组消息,进行离线群组消息的推送,只需存储一份群组消息,大大节省了数据存储空间。
在一个实施例中,向群组成员所使用的终端推送群组消息的步骤包括:与群组成员所使用的终端建立会话通道;为会话通道中待推送的群组消息生成序列号;将群组消息与相应的序列号关联存储至缓存区中;向终端推送携带所关联的序列号的群组消息。该方法还包括:若接收到终端返回的携带序列号的接收反馈信息,则在缓存区中对应清除序列号、以及与序列号关联存储的群组消息。
其中,会话通道(Session),是服务器与群组成员所使用的终端之间建立的用于进行群组消息传输的通道。序列号,用于唯一标识会话通道中的待推送的群组消息。
在一个实施例中,在服务器与群组成员所使用的终端建立会话通道后,服务器可以按顺序依次为每一个进入会话通道中待推送的群组消息生成序列号。
可以理解,序列号需要具有一定的排列规律,以使群组成员所使用的终端可以根据接收到的群组消息的序列号确定是否存在遗漏的群组消息(即是否存在未接收到的群组消息)。比如:序列号可以为从0开始以间隔为1依次递增,即,会话通道中的第一个待推送的群组消息的序列号为0,第二个待推送的群组消息的序列号为1,第三个待推送的群组消息的序列号为2,以此类推。序列号还可以以其他的排列规律进行设置,不做限定。
在一个实施例中,可以预先对缓存区的大小进行限定,在缓存区存满后,可以清除最初存入的序列号和群组消息,以防止缓存区内存无线增大。
在一个实施例中,缓存区可以为环形缓存区。在环形缓冲区存满后,可以清除最初存入的序列号和群组消息,以防止缓存区内存无线增大。
在一个实施例中,在服务器向终端推送携带所关联的序列号的群组消息后,若终端接收到群组消息,则终端可以生成接收反馈信息,并将接收反馈信息发送至服务器,接收反馈信息中携带终端所接收到的群组消息的序列号。若服务器接收到终端返回的携带序列号的接收反馈信息,则服务器可以在缓存区中对应清除该序列号、以及与该序列号关联存储的群组消息。
如图5所示,为本实施例中消息推送成功的流程示意图。具体包括如下步骤:S1、消息推送端向服务器发送消息推送请求。S2、服务器与消息接收端之间建立会话通道,并通过序列号生成器为待推送的群组消息生成序列号,并将群组消息和序列号关联存储至环形缓存区中。S3、创建计时任务,开始计时。S4、推送群组消息至链接管理模块。S5、通过链接管理模块将群组消息推送至消息接收端。S6、消息接收端在接收到群组消息后,发送携带序列号的接收反馈信息至服务器。S7、服务器的链接管理模块将接收到的携带序列号的接收反馈信息发送至消息获取器。S8、消息获取器在接收到接收反馈信息后,可以取消计时。S9、消息获取器可以将环形缓存区中相应的序列号和关联存储的群组消息进行清除。S10、服务器可以向消息推送端反馈消息接收端已成功接收到消息的通知。可以根据消息推送端的用户的设置,确定是否需要执行步骤S10。
本实施例中,通过为待推送的群组消息生成序列号,并将待推送的消息存入缓存区,在接收到携带序列号的接收反馈信息后,才将缓存区中的序列号和关联存储的群组消息进行清除,以确保终端成功接收到群组消息,提高了群组消息推送的实时性和可靠性。
在一个实施例中,在向终端推送携带所关联的序列号的群组消息之后,该方法还包括:若在第一预设时长内,未接收到终端返回的携带序列号的接收反馈信息,则从缓存区中获取与序列号关联存储的群组消息;重新向终端推送携带序列号的群组消息。
具体地,针对每一个序列号关联的群组消息,服务器可以在向终端推送携带所关联的序列号的群组消息时开始计时,若在第一预设时长内,未接收到终端返回的携带该序列号的接收反馈信息,则服务器可以从缓存区中获取与该序列号关联存储的群组消息,并重新向终端推送携带该序列号的群组消息。
在一个实施例中,服务器可以在重新向终端推送携带该序列号的群组消息时重新开始计时,若在第一预设时长内,再次未接收到终端返回的携带该序列号的接收反馈信息,则服务器可以再次从缓存区中获取与该序列号关联存储的群组消息,并重新向终端推送携带该序列号的群组消息,并重新开始计时。若在第一预设时长内,仍未收到,则再次重复前面的重新推送消息的步骤,直至服务器在重新推送消息后的第一预设时长内接收到携带该序列号的接收反馈信息。
在一个实施例中,可以对服务器针对同一个序列号对应的群组消息的推送次数进行限制,在服务器针对同一个序列号对应的群组消息的推送次数大于或等于预设次数阈值时,则服务器停止重新推送该序列号所关联的群组消息,即,此时不论是否接收到携带该序列号的接收反馈信息,服务器都不再重新推送携带该序列号的群组消息。比如:预设次数阈值可以为3次。
如图6所示,为本实施例中服务器超时未接收到接收反馈信息的情况下进行重新推送的流程示意图。具体包括如下步骤:S1、服务器的计时任务确定超时,即在第一预设时长内未接收到终端返回的携带序列号的接收反馈信息。S2、服务器的消息获取器从环形缓存区中获取重新推送的数据,重新推送的数据包括重新推送的群组消息和相关联的序列号。S3、重新开始计时。S4、将重新推送的数据发送至链接管理模块。S5、服务器的链接管理模块将重新推送的数据重新推送至消息接收端。S6、若链接管理模块确定链接有问题,无法推送,则取消推送,并可以清除环形缓存区中的数据。
本实施例中,若服务器在第一预设时长内未接收到终端返回的接收反馈信息,则获取缓存区中的群组消息,并重新进行推送,从而确保了终端成功接收到群组消息,提高了群组消息推送的实时性和可靠性。
在一个实施例中,在向终端推送携带所关联的序列号的群组消息之后,该方法还包括:接收终端发送至的重新推送请求;重新推送请求,是在终端检测到存在遗漏的序列号、且在第二预设时长内未接收到携带遗漏的序列号的群组消息时,发送的用于请求重新推送遗漏的序列号对应的群组消息的请求;确定重新推送请求所指示的序列号,并从缓存区中获取与所指示的序列号关联存储的群组消息;重新向终端推送与所指示的序列号关联存储的群组消息。
可以理解,因为序列号具有一定的排列规律,则终端可以根据预设的序列号的排列规律,确定所接收到的群组消息所携带的序列号是否存在遗漏,即,是否存在未接收到的群组消息。比如:假设序列号的排列规律为从0开始以间隔1进行递增,终端接收到的群组消息所携带的序列号依次为0、1、2、3和5,则终端可以确定遗漏了序列号4,即,未接收到携带序列号4的群组消息,则终端可以向服务器请求重新推送序列号为4的群组消息。再比如:终端接收到的群组消息所携带的序列号依次为0、1、2、3和7,则终端可以确定遗漏了序列号4至6,即,未接收到各自携带序列号4、5和6的群组消息,则终端可以向服务器请求重新推送序列号为4至6分别对应的群组消息。
具体地,终端可以根据所接收到的群组消息所携带的序列号,确定是否存在遗漏的序列号。若存在遗漏的序列号,则终端可以开始计时,若在第二预设时长内仍未接收到携带该遗漏的序列号的群组消息,则终端可以根据该遗漏的序列号生成重新推送请求,并将重新推送请求发送至服务器。服务器可以响应于重新推送请求,确定重新推送请求所指示的序列号,并从缓存区中获取与所指示的序列号关联存储的群组消息,重新向终端推送携带该序列号的群组消息。
如图7所示,为本实施例中消息接收端超时未接收到群组消息的情况下服务器重新推送群组消息的流程示意图。具体包括如下步骤:S1、若消息接收端检测到存在遗漏的序列号、且在第二预设时长内未接收到携带遗漏的序列号的群组消息,则向服务器发送重新推送请求。S2、服务器的连接管理模块可以将重新推送请求发送至消息获取器。S3、服务器的消息获取器可以从环形缓存区中获取重新推送的数据,重新推送的数据包括重新推送的群组消息和相关联的序列号。S4、将重新推送的数据发送至链接管理模块。S5、服务器的链接管理模块将重新推送的数据重新推送至消息接收端。
本实施例中,群组成员所使用的终端可以根据接收到的群组消息的序列号,确定是否存在未接收到的群组消息,若存在,则终端可以主动向服务器请求重新推送遗漏的群组消息,从而确保了终端成功接收到群组消息,提高了群组消息推送的实时性和可靠性。
在一个实施例中,群组消息为企业团体的即时通信群组消息。群组为企业团体的即时通信群组。第二群组成员所属群组,是第二群组成员所加入的企业团体的即时通信群组。接收第二群组成员所使用的终端所发送至的消息获取请求包括:接收第二群组成员所使用的终端基于企业团体即时通信应用发送至的消息获取请求。
其中,企业团体,是指企业中由多个企业成员组成的团体。企业团体的即时通信群组,是指在企业团体即时通信应用中由企业团体中的成员所组成的群组。
在一个实施例中,企业团体可以为企业中的各个层级的部门或小组等中的至少一种。比如:企业中的财务部为企业中的一个企业团体,企业中的某个项目小组为企业中的一个企业团体。
在一个实施例中,企业团体即时通信应用,可以为企业微信、钉钉或云之家等中的任意一种。
具体地,第二群组成员所使用的终端可以基于企业团体即时通信应用发送至的消息获取请求至服务器。
本实施例中,将本申请各实施例中的群组消息推送方法应用于企业团体即时通信应用的场景下,以节省了数据存储空间,提高企业团体即时通信应用的性能,从而提高企业办公效率。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种群组消息推送装置800,包括:关联模块802、消息推送模块804、接收模块806和离线消息确定模块808,其中:
关联模块802,用于将待推送的群组消息与相应的群组进行关联存储;
消息推送模块804,用于针对群组中处于在线状态的第一群组成员,向在线状态的第一群组成员所使用的终端推送群组消息;
接收模块806,用于针对群组中处于离线状态的第二群组成员,在第二群组成员上线后,接收第二群组成员所使用的终端所发送至的消息获取请求;
离线消息确定模块808,用于响应于消息获取请求,获取与第二群组成员所属群组关联存储的离线群组消息;离线群组消息,是在第二群组成员处于离线状态期间,与第二群组成员所属群组关联存储的群组消息;
消息推送模块804,还用于向第二群组成员所使用的终端推送离线群组消息。
在一个实施例中,关联模块802还用于生成群组消息的标识,并将群组消息和群组消息的标识关联存储至群组消息表中;将群组消息的标识与相应的群组的标识关联写入关联表中。离线消息确定模块808还用于根据关联表,确定与第二群组成员所属群组的标识相关联的离线群组消息的标识;根据离线群组消息的标识,从群组消息表中获取离线群组消息。
在一个实施例中,离线消息确定模块808还用于根据第二群组成员的个人群组列表,确定第二群组成员所属群组的标识;根据关联表,确定与第二群组成员所属群组的标识相关联的群组消息的标识;将相关联的群组消息的标识与第二群组成员的离线前的群组消息的标识进行比对,确定与第二群组成员所属群组的标识相关联的离线群组消息的标识。
在一个实施例中,消息推送模块804还用于与群组成员所使用的终端建立会话通道;为会话通道中待推送的群组消息生成序列号;将群组消息与相应的序列号关联存储至缓存区中;向终端推送携带所关联的序列号的群组消息。若接收到终端返回的携带序列号的接收反馈信息,则在缓存区中对应清除序列号、以及与序列号关联存储的群组消息。
在一个实施例中,消息推送模块804还用于若在第一预设时长内,未接收到终端返回的携带序列号的接收反馈信息,则从缓存区中获取与序列号关联存储的群组消息;重新向终端推送携带序列号的群组消息。
在一个实施例中,消息推送模块804还用于接收终端发送至的重新推送请求;重新推送请求,是在终端检测到存在遗漏的序列号、且在第二预设时长内未接收到携带遗漏的序列号的群组消息时,发送的用于请求重新推送遗漏的序列号对应的群组消息的请求;确定重新推送请求所指示的序列号,并从缓存区中获取与所指示的序列号关联存储的群组消息;重新向终端推送与所指示的序列号关联存储的群组消息。
在一个实施例中,群组消息为企业团体的即时通信群组消息。群组为企业团体的即时通信群组。第二群组成员所属群组,是第二群组成员所加入的企业团体的即时通信群组。接收模块806还用于接收第二群组成员所使用的终端基于企业团体即时通信应用发送至的消息获取请求。
上述群组消息推送装置,将待推送的群组消息与相应的群组进行关联存储,针对群组中处于在线状态的第一群组成员,直接向在线状态的第一群组成员所使用的终端推送群组消息,针对群组中处于离线状态的第二群组成员,则在第二群组成员上线后,接收第二群组成员所使用的终端主动发送至的消息获取请求,然后响应于消息获取请求,获取与第二群组成员所属群组关联存储的离线群组消息,向第二群组成员所使用的终端推送离线群组消息。这样无需分别为每一个群组成员分别存储一份群组消息,而是只需存储一份群组消息,大大节省了数据存储空间。
关于群组消息推送装置的具体限定可以参见上文中对于群组消息推送方法的限定,在此不再赘述。上述群组消息推送装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储本申请各实施例中的数据表。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种群组消息推送方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种群组消息推送方法,其特征在于,所述方法包括:
将待推送的群组消息与相应的群组进行关联存储;
针对所述群组中处于在线状态的第一群组成员,向所述在线状态的第一群组成员所使用的终端推送所述群组消息;
针对所述群组中处于离线状态的第二群组成员,在所述第二群组成员上线后,接收所述第二群组成员所使用的终端所发送至的消息获取请求;
响应于所述消息获取请求,获取与所述第二群组成员所属群组关联存储的离线群组消息;所述离线群组消息,是在所述第二群组成员处于离线状态期间,与所述第二群组成员所属群组关联存储的群组消息;
向所述第二群组成员所使用的终端推送所述离线群组消息。
2.根据权利要求1所述的方法,其特征在于,所述将待推送的群组消息与相应的群组进行关联存储包括:
生成所述群组消息的标识,并将所述群组消息和所述群组消息的标识关联存储至群组消息表中;
将所述群组消息的标识与相应的群组的标识关联写入关联表中;
所述获取与所述第二群组成员所属群组关联存储的离线群组消息包括:
根据所述关联表,确定与所述第二群组成员所属群组的标识相关联的离线群组消息的标识;
根据所述离线群组消息的标识,从所述群组消息表中获取所述离线群组消息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述关联表,确定与所述第二群组成员所属群组的标识相关联的离线群组消息的标识包括:
根据所述第二群组成员的个人群组列表,确定所述第二群组成员所属群组的标识;
根据所述关联表,确定与所述第二群组成员所属群组的标识相关联的群组消息的标识;
将所述相关联的群组消息的标识与所述第二群组成员的离线前的群组消息的标识进行比对,确定与所述第二群组成员所属群组的标识相关联的离线群组消息的标识。
4.根据权利要求1所述的方法,其特征在于,向群组成员所使用的终端推送群组消息的步骤包括:
与群组成员所使用的终端建立会话通道;
为所述会话通道中待推送的群组消息生成序列号;
将所述群组消息与相应的所述序列号关联存储至缓存区中;
向所述终端推送携带所关联的序列号的所述群组消息;
所述方法还包括:
若接收到所述终端返回的携带所述序列号的接收反馈信息,则在所述缓存区中对应清除所述序列号、以及与所述序列号关联存储的所述群组消息。
5.根据权利要求4所述的方法,其特征在于,在所述向所述终端推送携带所关联的序列号的所述群组消息之后,所述方法还包括:
若在第一预设时长内,未接收到所述终端返回的携带所述序列号的接收反馈信息,则从所述缓存区中获取与所述序列号关联存储的所述群组消息;
重新向所述终端推送携带所述序列号的所述群组消息。
6.根据权利要求4所述的方法,其特征在于,在所述向所述终端推送携带所关联的序列号的所述群组消息之后,所述方法还包括:
接收所述终端发送至的重新推送请求;所述重新推送请求,是在所述终端检测到存在遗漏的序列号、且在第二预设时长内未接收到携带所述遗漏的序列号的群组消息时,发送的用于请求重新推送所述遗漏的序列号对应的群组消息的请求;
确定所述重新推送请求所指示的序列号,并从所述缓存区中获取与所指示的序列号关联存储的群组消息;
重新向所述终端推送与所指示的序列号关联存储的所述群组消息。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述群组消息为企业团体的即时通信群组消息;所述群组为所述企业团体的即时通信群组;所述第二群组成员所属群组,是所述第二群组成员所加入的所述企业团体的即时通信群组;
所述接收所述第二群组成员所使用的终端所发送至的消息获取请求包括:
接收所述第二群组成员所使用的终端基于企业团体即时通信应用发送至的消息获取请求。
8.一种群组消息推送装置,其特征在于,所述装置包括:
关联模块,用于将待推送的群组消息与相应的群组进行关联存储;
消息推送模块,用于针对所述群组中处于在线状态的第一群组成员,向所述在线状态的第一群组成员所使用的终端推送所述群组消息;
接收模块,用于针对所述群组中处于离线状态的第二群组成员,在所述第二群组成员上线后,接收所述第二群组成员所使用的终端所发送至的消息获取请求;
离线消息确定模块,用于响应于所述消息获取请求,获取与所述第二群组成员所属群组关联存储的离线群组消息;所述离线群组消息,是在所述第二群组成员处于离线状态期间,与所述第二群组成员所属群组关联存储的群组消息;
消息推送模块,还用于向所述第二群组成员所使用的终端推送所述离线群组消息。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011567312.2A CN112671636B (zh) | 2020-12-25 | 2020-12-25 | 群组消息推送方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011567312.2A CN112671636B (zh) | 2020-12-25 | 2020-12-25 | 群组消息推送方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671636A true CN112671636A (zh) | 2021-04-16 |
CN112671636B CN112671636B (zh) | 2023-03-03 |
Family
ID=75409676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011567312.2A Active CN112671636B (zh) | 2020-12-25 | 2020-12-25 | 群组消息推送方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671636B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113645123A (zh) * | 2021-08-03 | 2021-11-12 | 福建天泉教育科技有限公司 | 一种消息存储方法及终端 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102223318A (zh) * | 2011-07-08 | 2011-10-19 | 中国联合网络通信集团有限公司 | 电子邮件的处理方法及系统 |
CN106713328A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇虎科技有限公司 | 一种基于长连接的信息处理方法和装置 |
CN108322836A (zh) * | 2018-01-24 | 2018-07-24 | 北京奇艺世纪科技有限公司 | 一种数据传输的方法及装置 |
CN108880972A (zh) * | 2017-05-09 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种信息处理方法、服务器及终端 |
CN108881354A (zh) * | 2017-05-09 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种推送信息存储方法、装置、服务器和计算机存储介质 |
CN111193792A (zh) * | 2019-12-27 | 2020-05-22 | 北京指掌易科技有限公司 | 一种消息传输方法、装置、电子设备和存储介质 |
CN111555893A (zh) * | 2020-04-22 | 2020-08-18 | 腾讯科技(深圳)有限公司 | 消息数据传输方法、装置、计算机设备和存储介质 |
-
2020
- 2020-12-25 CN CN202011567312.2A patent/CN112671636B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102223318A (zh) * | 2011-07-08 | 2011-10-19 | 中国联合网络通信集团有限公司 | 电子邮件的处理方法及系统 |
CN106713328A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇虎科技有限公司 | 一种基于长连接的信息处理方法和装置 |
CN108880972A (zh) * | 2017-05-09 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种信息处理方法、服务器及终端 |
CN108881354A (zh) * | 2017-05-09 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种推送信息存储方法、装置、服务器和计算机存储介质 |
CN108322836A (zh) * | 2018-01-24 | 2018-07-24 | 北京奇艺世纪科技有限公司 | 一种数据传输的方法及装置 |
CN111193792A (zh) * | 2019-12-27 | 2020-05-22 | 北京指掌易科技有限公司 | 一种消息传输方法、装置、电子设备和存储介质 |
CN111555893A (zh) * | 2020-04-22 | 2020-08-18 | 腾讯科技(深圳)有限公司 | 消息数据传输方法、装置、计算机设备和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113645123A (zh) * | 2021-08-03 | 2021-11-12 | 福建天泉教育科技有限公司 | 一种消息存储方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN112671636B (zh) | 2023-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108449405B (zh) | 事件提醒方法、装置、计算机设备和存储介质 | |
US7593925B2 (en) | Method and system for locating contact information collected from contact sources | |
CN108881354B (zh) | 一种推送信息存储方法、装置、服务器和计算机存储介质 | |
CN108683668B (zh) | 内容分发网络中的资源校验方法、装置、存储介质及设备 | |
US20160021035A1 (en) | Creating a user group | |
CN107395559B (zh) | 基于redis的数据处理方法及设备 | |
CN106470150B (zh) | 关系链存储方法及装置 | |
CN108712457A (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
WO2019047568A1 (zh) | 用户呼叫处理方法、装置、计算机设备和存储介质 | |
CN111414139A (zh) | 在线远程打印方法、装置、计算机设备和存储介质 | |
CN111416823A (zh) | 一种数据传输方法和装置 | |
CN111541762B (zh) | 数据处理的方法、管理服务器、设备及存储介质 | |
CN112579754A (zh) | 智能机器人的会话交互方法、装置、计算机设备 | |
CN110311855B (zh) | 用户消息处理方法、装置、电子设备及存储介质 | |
CN112671636B (zh) | 群组消息推送方法、装置、计算机设备和存储介质 | |
US10853892B2 (en) | Social networking relationships processing method, system, and storage medium | |
US20210112025A1 (en) | Method and server for processing messages | |
CN113127232A (zh) | 消息处理方法、装置、设备及存储介质 | |
CN105450513A (zh) | 归档邮件附件的方法和云存储服务器 | |
US9852031B2 (en) | Computer system and method of identifying a failure | |
CN116414628A (zh) | 一种新旧系统切换过程中交易请求的处理方法和装置 | |
CN108880988A (zh) | 即时通讯消息的监控方法、系统、计算机设备和存储介质 | |
CN108173892B (zh) | 云端镜像操作方法和装置 | |
CN114328129A (zh) | 消息发送方法、装置、设备及存储介质 | |
CN107704557B (zh) | 操作互斥数据的处理方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |