消息发送方法、装置、设备及存储介质与流程

文档序号:29571520发布日期:2022-04-09 04:04阅读:161来源:国知局
消息发送方法、装置、设备及存储介质与流程

1.本公开涉及即时通讯技术领域,尤其涉及一种消息发送方法、装置、设备及存储介质。


背景技术:

2.即时通讯(instant messaging,im)是一种流行的通讯方式。基于各种各样的即时通讯软件,用户之间可以使用网络实时的传递文字、文件、语音与视频等。
3.消息发送过程的耗时,即消息触达对端用户的速度,它是衡量im质量的重要指标,而用户所能感知到的消息触达对端用户的速度,会直接影响用户对通讯软件的使用体验。因此如何对缩短消息发送过程的耗时,是亟待解决的技术问题。


技术实现要素:

4.本公开提供一种消息发送方法、装置、设备及存储介质,以至少解决如何对缩短消息发送过程的耗时的问题。本公开的技术方案如下:
5.根据本公开实施例的第一方面,提供一种消息发送方法,包括:获取待发送的消息数据;将所述消息数据存储到数据库,以及,在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据;当接收到所述通讯服务端对所述消息数据的响应结果时,根据所述响应结果,对所述数据库中的所述消息数据的状态进行更新,以完成对所述消息数据的发送过程。
6.相关技术中,消息发送过程分为三个阶段,分别为消息准备阶段、网络传输阶段和发送结果确认阶段。为了优化消息发送过程耗时,本公开实施例让消息准备阶段、网络传输阶段同时进行,即:将所述消息数据存储到数据库,以及,在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据。这样,消息发送过程的耗时即为消息准备阶段、网络传输阶段中的较大耗时与发送结果确认阶段的耗时的和。从而缩短了消息发送过程的耗时,缩短的时间即为消息准备阶段和网络传输阶段中的较小耗时。另外,由于本公开实施例是在根据服务端的响应结果对数据库中的消息数据的状态更新完成后,才认为消息发送过程完成,即在发送结果确认阶段完成后,才向用户传达出消息发送完成的信息,进而在缩短消息发送过程耗时的同时,避免出现发送端和接收端的数据不一致的问题。
7.结合第一方面,在第一方面可能的实现方式中,所述在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据,包括:如果所述消息数据的类型为预设类型,则在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据,所述预设类型包括文字类型和表情类型中的至少一种;或者,如果所述消息数据的数据量小于预设数据量,则在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据。
8.在上述实现方式中,考虑到不同类型的消息数据的体量不同,例如,文字、表情等
基础类型的消息数据体量较小,如多媒体资源或者各类格式的文件等非基础类型的消息数据体量较大。因此,实际上发送基础类型的消息数据的耗时较小,而发送非基础类型的消息的数据较大,并且在具体实现中,发送基础类型的消息数据所采用的逻辑和发送非基础类型的消息数据所采用的逻辑也是不同的。基于上述考虑,本公开实施例中,对于预设类型的消息数据或者数据量较小的消息数据,采用“在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据”的方式,以缩短发送过程的耗时,具体实现时,对此类消息数据对应的发送逻辑进行配置即可;而对于非预设类型的消息数据或者数据量较大的消息数据,由于发送此类消息数据的网络传输时长较长,因此采用“在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据”的方式,所能缩短的耗时显得微不足道,甚至不能为用户所感知,并且,由于其所采用的发送逻辑与预设类型的消息的发送逻辑不同,因此也不能复用逻辑,因此本公开实施例对于非预设类型的消息数据,采用现有发送逻辑,即在“将所述消息数据存储到所述数据库后,向所述通讯服务端发送消息数据”,而不对其进行另外配置,从而减少开发成本。
9.结合第一方面,在第一方面可能的实现方式中,所述在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据,包括:如果所述消息数据包括所述多媒体数据,则将所述多媒体数据上传至文件服务器,并获得所述文件服务器返回的所述多媒体数据的存储地址;根据所述多媒体数据的存储地址生成消息体;如果所述消息数据不包括所述多媒体数据,根据所述消息数据生成消息体;在将所述消息体存储到数据库的过程中,向所述通讯服务端发送所述消息体。
10.在上述实现方式中,在待发送的消息数据中包含多媒体数据时,先将多媒体数据上传到文件服务器,获得多媒体数据的存储地址,再根据该存储地址生成消息体,而非直接根据多媒体数据生成消息体,从而降低消息发送的数据体量,降低网络传输的耗时。
11.结合第一方面,在第一方面可能的实现方式中,所述在将所述消息体存储到数据库的过程中,向所述通讯服务端发送所述消息体,包括:将所述消息体存储到所述数据库中,将所述消息体的状态标记为第一状态,所述第一状态用于表征所述消息体处于发送前的状态;将被标记为所述第一状态的所述消息体,由所述第一状态修改为第二状态,所述第二状态用于表征所述消息体处于发送中的状态;在执行所述将所述消息体存储到所述数据库中、将所述消息体的状态标记为第一状态或者将所述消息体的状态由所述第一状态修改为第二状态的过程中,向所述通讯服务端发送所述消息体。
12.由第一方面可知,存储消息数据的操作与向服务端发送消息的操作是并行执行的。这意味着,存储消息数据时,消息数据的实际状态为“发送中状态”,因此在理论上,可以在消息体存储到数据库时,将消息体直接标记为第二状态。然而,为了避免由于某些原因(如网络、硬件)导致请求发送失败,而却将消息体标记为“发送中状态”,造成数据在数据库中的状态与数据的实际状态不一致,本公开实施例将消息体存储到数据库时,并先将消息的状态标记为第一状态(即初始状态),再立即更新为第二状态(即发送中状态),保证数据存储操作的安全性和稳定性。
13.结合第一方面,在第一方面可能的实现方式中,在将所述消息体存储到数据库的过程中,向所述通讯服务端发送所述消息体,包括:将所述消息体存储到所述数据库中,并将所述消息体的状态标记为第二状态,所述第二状态用于表征所述消息体处于发送中的状
态;在执行所述将所述消息体存储到所述数据库中,并将所述消息体的状态标记为所述第二状态的过程中,向所述通讯服务端发送所述消息体。
14.由第一方面可知,存储消息数据的操作与向服务端发送消息的操作是并行执行的。这意味着,存储消息数据时,消息数据的实际状态为“发送中状态”,因此本实现方式中,在消息体存储到数据库时,将消息体直接标记为第二状态(即发送中状态),简化存储操作,降低数据存储过程的耗时。
15.结合第一方面,在第一方面可能的实现方式中,所述将所述消息数据存储到数据库,包括:在所述消息数据包括所述多媒体数据时,在上传所述多媒体数据至所述文件服务器的过程中,将所述多媒体数据存储到所述数据库,并将所述多媒体数据的状态标记为第一状态,所述第一状态用于表征所述多媒体数据处于发送前的状态;在向所述通讯服务端发送所述消息体过程中,将所述数据库中的被标记为所述第一状态的所述多媒体数据,由所述第一状态修改为第二状态,所述第二状态用于表征所述消息体处于发送中的状态。
16.本实现方式中,在消息数据为多媒体数据时,在上传多媒体数据时,将该多媒体数据存储到数据库中,并将其状态标记为第一状态,在向服务端发送请求的同时,将已经存到数据库中的多媒体数据更新为第二状态,而无需等待获得多媒体数据的存储地址后,再存储根据存储地址生成的消息体,从而节省耗时。
17.结合第一方面,在第一方面可能的实现方式中,根据所述响应结果,对所述数据库中的所述消息数据的状态进行更新,包括:如果所述响应结果表征消息发送成功,则将所述数据库中的所述消息数据的状态更新为第三状态,所述第三状态用于表征所述消息数据处于发送成功的状态;如果所述响应结果表征消息发送失败,则将所述数据库中的所述消息数据的状态更新为第四状态,所述第四状态用于表征所述消息数据处于发送失败的状态。
18.本公开实现方式中,在消息发送成功的情况下,将数据库中的数据的消息状态更新为第三状态(即发送成功状态),在消息发送失败的情况下,将数据库中的数据的消息数据的状态更新为第四状态(即发送失败状态)。这样,可以保证发送端和接收端两侧的消息记录数据的一致性。
19.根据本公开实施例的第二方面,提供一种消息发送装置,包括:数据获取模块,用于获取待发送的消息数据;并行执行模块,用于将所述消息数据存储到数据库,以及,在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据;发送结果确认模块,用于当接收到所述通讯服务端对所述消息数据的响应结果时,根据所述响应结果,对所述数据库中的所述消息数据的状态进行更新,以完成对所述消息数据的发送过程。
20.结合第二方面,在第二方面可能的实现方式中,所述并行执行模块,具体用于:如果所述消息数据的类型为预设类型,则在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据,所述预设类型包括文字类型和表情类型中的至少一种;或者,如果所述消息数据的数据量小于预设数据量,则在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据。
21.结合第二方面,在第二方面可能的实现方式中,所述并行执行模块,具体用于:如果所述消息数据包括所述多媒体数据,则将所述多媒体数据上传至文件服务器,并获得所述文件服务器返回的所述多媒体数据的存储地址;根据所述多媒体数据的存储地址生成消
息体;如果所述消息数据不包括所述多媒体数据,根据所述消息数据生成消息体;在将所述消息体存储到数据库的过程中,向所述通讯服务端发送所述消息体。
22.结合第二方面,在第二方面可能的实现方式中,所述并行执行模块,具体用于:将所述消息体存储到所述数据库中,将所述消息体的状态标记为第一状态,所述第一状态用于表征所述消息体处于发送前的状态;将被标记为所述第一状态的所述消息体,由所述第一状态修改为第二状态,所述第二状态用于表征所述消息体处于发送中的状态;在执行所述将所述消息体存储到所述数据库中、将所述消息体的状态标记为第一状态或者将所述消息体的状态由所述第一状态修改为第二状态的过程中,向所述通讯服务端发送所述消息体。
23.结合第二方面,在第二方面可能的实现方式中,所述并行执行模块,具体用于:将所述消息体存储到所述数据库中,并将所述消息体的状态标记为第二状态,所述第二状态用于表征所述消息体处于发送中的状态;在执行所述将所述消息体存储到所述数据库中,并将所述消息体的状态标记为第二状态的过程中,向所述通讯服务端发送所述消息体。
24.结合第二方面,在第二方面可能的实现方式中,所述并行执行模块,具体用于:在所述消息数据包括所述多媒体数据时,在所述请求生成模块上传所述多媒体数据至所述文件服务器的过程中,将所述多媒体数据存储到所述数据库,并将所述多媒体数据的状态标记为第一状态,所述第一状态用于表征所述多媒体数据处于发送前的状态;在向所述通讯服务端发送所述消息体的过程中,将所述数据库中的被标记为所述第一状态的所述多媒体数据,由所述第一状态修改为第二状态,所述第二状态用于表征所述消息体处于发送中的状态。
25.结合第二方面,在第二方面可能的实现方式中,所述发送结果确认模块,具体用于:如果所述响应结果表征消息发送成功,则将所述数据库中的所述消息数据的状态更新为第三状态,所述第三状态用于表征所述消息数据处于发送成功的状态;如果所述响应结果表征消息发送失败,则将所述数据库中的所述消息数据的状态更新为第四状态,所述第三状态用于表征所述消息数据处于发送成功的状态。
26.根据本公开实施例的第三方面,提供一种电子设备,包括:处理器和用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述可执行指令,以实现如第一方面及其任一项实现方式中所述的方法。
27.根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如第一方面及其任一项实现方式中所述的方法。
28.根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如第一方面及其任一项实现方式中所述的方法。
29.本公开的实施例提供的技术方案至少带来以下有益效果:
30.本公开实施例提供一种消息发送方法、装置、设备及存储介质,该方法首先获取待发送的消息数据;然后将消息数据存储到数据库,以及,在执行将消息数据存储到数据库的过程中,向通讯服务端发送该消息数据;当接收到通讯服务端对消息数据的响应结果时,根据响应结果,对数据库中的消息数据的状态进行更新,以完成对消息数据的发送过程。可以
看出,本公开实施例提供的消息发送方法中,消息准备阶段、网络传输阶段同时进行,这样,消息发送过程的耗时即为消息准备阶段、网络传输阶段中的较大耗时与发送结果确认阶段的耗时的和,从而缩短消息发送过程的耗时,缩短的时长即为消息准备阶段和网络传输阶段中的较小耗时。
31.另外,由于本公开实施例是在根据服务端的响应结果对数据库中的消息数据的状态更新完成后,才认为消息发送过程完成,即在发送结果确认阶段完成后,才向用户传达出消息发送完成的信息,进而在缩短消息发送过程耗时的同时,避免出现发送端和接收端的数据不一致的问题。
32.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
33.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
34.图1是根据一示例性实施例示出的一种通讯系统示意图;
35.图2是根据一示例性实施例示出的一种消息发送方法流程图;
36.图3是根据一示例性实施例示出的一种消息发送过程耗时示意图;
37.图4是根据一示例性实施例示出的另一种消息发送过程耗时示意图;
38.图5是根据一示例性实施例示出的一种消息发送装置框图;
39.图6是根据一示例性实施例示出的一种电子设备示意图。
具体实施方式
40.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
41.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
42.另外,在本公开实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b。本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,在本公开实施例的描述中,“多个”是指两个或两个以上。
43.相关技术中,消息发送过程分为三个阶段,分别为消息准备阶段、网络传输阶段和发送结果确认阶段。当该三个阶段依次执行完成后,认为该次消息发送过程完成。进而,该次消息发送过程的耗时,即为该三个阶段的耗时。
44.为了优化消息发送过程耗时,本公开实施例提供一种消息发送方法,该方法中,消息准备阶段、网络传输阶段同时进行,即:将消息数据存储到数据库,以及,在执行将消息数
据存储到数据库的过程中,向通讯服务端发送该消息数据。这样,消息发送过程的耗时即为消息准备阶段、网络传输阶段中的较大耗时与发送结果确认阶段的耗时的和,即t

=max{t
消息准备阶段
,t
网络传输阶段
}+t
发送结果确认阶段
,从而缩短了消息发送过程的耗时,缩短的时间即为消息准备阶段和网络传输阶段中的较小耗时,即

t=min{t
消息准备阶段
,t
网络传输阶段
}。
45.本公开实施例提供的消息发送方法,可以应用于通讯系统。图1为本公开实施例提供的一种通讯系统示意图,如图1所示,该通讯系统可以包括:第一设备110、通讯服务器120和第二设备130。其中,第一设备110和第二设备130可与通讯服务器120建立通信连接。
46.在上述通讯系统中,通讯服务器120用于为第一设备110和第二设备130提供服务,如即时通讯服务。第一设备110和第二设备130之间可以通过通讯服务器120传递消息。应该理解的是,在第一设备110和第二设备130通讯的过程中,第一设备110可以作为消息发送端,向通讯服务器120发送消息数据,以请求通讯服务器120将消息数据发送给作为消息接收端的第二设备130,第二设备130也可以作为消息发送端,向通讯服务器120发送消息数据,以请求通讯服务器120将消息数据发送给作为消息接收端的第一设备110。
47.在本公开实施例中,第一设备110或者第二设备130用于通过执行本公开实施例提供的消息发送方法,向第二设备130或者第一设备110发送消息数据。例如,获取待发送的消息数据;将消息数据存储到数据库,以及,在执行将消息数据存储到数据库的过程中,向通讯服务器120发送该消息数据,以通过通讯服务器120将该消息数据发送给接收端设备;当接收到通讯服务器120对消息的响应结果时,根据响应结果,对数据库中的消息数据的状态进行更新,以完成对消息数据的发送过程。其中,通讯服务器120还可以称为通讯服务端。
48.在一些实施例中,第一设备110和第二设备130可以是终端设备,如手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,pda)、增强现实(augmented reality,ar)\虚拟现实(virtual reality,vr)设备等可以安装并使用即时通讯应用(如快手)的设备,本公开对该终端的具体形态不作特殊限制。其可以与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互。
49.在一些实施例中,第一设备110和第二设备130还可以是本公开实施例提供的消息发送装置,该消息发送装置被配置执行本公开实施例提供的消息发送方法。或者,第一设备110和第二设备130还可以内置本公开实施例提供的消息方装置。本公开对第一设备110和第二设备130的具体实现方式不作限制。
50.需要说明的是,通讯服务器120可以是单独的一个服务器,或者,也可以是由多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。
51.在一些实施例中,第一设备110和第二设备130还可以为电子设备。
52.容易理解的是,作为消息发送端的设备可以与通讯服务器120集成于同一设备。当作为消息发送端的设备与通讯服务器120集成于同一设备时,消息发送端与通讯服务器120的之间的通信方式为该设备内部模块之间的通信。这种情况下,二者之间的通信过程与二者相互独立的情况下的通信过程相同。
53.下面结合上述图1示出的通讯系统,对本公开实施例提供的消息发送方法进行详细介绍。该消息发送方法可以应用于上述图1示出的第一设备110和第二设备130。如图2所
示,该方法可以包括:
54.s201,获取待发送的消息数据。
55.s202,将消息数据存储到数据库,以及,在执行将消息数据存储到数据库的过程中,向通讯服务端发送消息数据。
56.s203,当接收到通讯服务端对消息数据的响应结果时,根据该响应结果,对数据库中的该消息数据的状态进行更新,以完成对该消息数据的发送过程。
57.本公开实施例中,数据库可以是发送端设备本地存储。
58.如图3所示,可以将消息发送过程分为三个阶段,分别为消息准备阶段、网络传输阶段和发送结果确认阶段。其中,消息准备阶段的处理操作包括获取待发送的消息数据、将消息数据存储到数据库;网络传输阶段包括向通讯服务端发送该消息数据,以通过通讯服务端将该消息数据发送给接收端设备;发送结果确认阶段即接收服务端返回的响应结果,并根据响应结果对数据库中的消息数据的状态进行更新的过程。当该三个阶段依次执行完成后,认为该次消息发送过程完成。进而,用户所能感知到的该次消息发送过程的耗时,即为该三个阶段的总耗时。结合图3所示示例,若将消息准备阶段、网络传输阶段和发送结果确认阶段的执行耗时分别表示为t
消息准备阶段
,t
网络传输阶段
,t
发送结果确认阶段
,那么消息发送过程的耗时为t

=t
消息准备阶段
+t
网络传输阶段
+t
发送结果确认阶段

59.由上述s201-s203可以看出,为了优化消息发送过程耗时,本公开实施例提供的消息发送方法中,消息准备阶段、网络传输阶段同时进行,参阅图4,即:将所述消息数据存储到数据库,以及,在执行将所述消息数据存储到数据库的过程中,向通讯服务端发送消息数据。这样,消息发送过程的耗时即为消息准备阶段、网络传输阶段中的较大耗时与发送结果确认阶段的耗时的和,即t

=max{t
消息准备阶段
,t
网络传输阶段
}+t
发送结果确认阶段
,从而缩短消息发送过程的耗时,缩短的时间即为消息准备阶段和网络传输阶段中的较小耗时,即

t=min{t
消息准备阶段
,t
网络传输阶段
}。
60.示例性的,假设t
消息准备阶段
=50ms,t
网络传输阶段
=100ms,t
发送结果确认阶段
=30ms。那么,通过现有技术,执行消息发送过程的耗时t

=50ms+100ms+30ms=180ms。通过本公开实施例提供的消息发送方法,执行消息发送过程的耗时t

=100ms+30ms=130ms。可见,本公开实施例提供的消息发送方法,可以缩短消息发送过程的耗时,缩短的时间即为消息准备阶段和网络传输阶段中的较小耗时。
61.在s203中,通讯服务端对消息数据的响应结果,可以表征出消息发送成功或者消息发送失败。其中,消息发送成功可以理解为,向目标接收端设备发送消息数据成功;消息发送失败可以理解为,向目标接收端设备方消息数据失败。在s203中,发送端设备需要根据该响应结果所表征的含义,更新数据库中消息数据的状态。具体的,如果响应结果表征消息发送成功,则将数据库中的消息数据的状态更新为“发送成功状态”;如果响应结果表征消息发送失败,则将数据库中的消息数据的状态更新为“发送失败状态”。这样,可以保证发送端设备和接收端设备两侧的消息记录数据的一致性。其中,“发送成功状态”还可以称为第三状态,“发送失败状态”还可以称为第四状态。
62.此外,如果响应结果表征消息发送成功,那么响应结果中还可以包括与该消息有关的信息,如通讯服务端生成的消息id。在这种情况下,在s203中,发送端设备除了需要将数据库中的消息数据的状态更新为“发送成功状态”,还需要将响应结果中与该消息有关的
信息保存到数据库中。
63.在一些方案中,在网络传输阶段完成时,即认为消息发送过程完成。然而,这样容易使得发送结果确认阶段还未完成,通讯应用就被用户关闭的情况,从而导致消息传输成功,但发送端设备本地保存的消息发送记录缺失,造成接收端设备和发送端设备两侧的消息记录数据不一致。相比于这些技术方案,本公开实施例提供的消息发送方法,是在根据通讯服务端的响应结果对数据库中的消息数据的状态更新完成后,才认为消息发送过程完成,即在发送结果确认阶段完成后,才向用户传达出消息发送完成的信息,进而在缩短消息发送过程耗时的同时,避免出现发送端设备和接收端设备两侧的数据不一致的问题。
64.实际应用中,不同类型的消息数据的体量不同,例如,文字、表情等基础类型的消息数据体量较小,如图片、音频、视频等各类格式的多媒体数据等非基础类型的消息数据体量较大。实际上发送基础类型的消息数据的耗时较小,而发送非基础类型的消息的数据较大,并且在具体实现中,发送基础类型的消息数据所采用的逻辑和发送非基础类型的消息数据所采用的逻辑也是不同的。
65.基于上述考虑,本公开实施例中,对于预设类型的消息数据,采用“在执行将消息数据存储到数据库的过程中,向通讯服务端发送消息数据”这一“快速发送”方式,以缩短发送过程的耗时,具体实现时,对此类消息数据对应的发送逻辑进行配置即可。其中,预设类型的消息数据,可以理解为前述基础类型的消息数据,如文字、表情等。可以预先配置支持前述“快速发送”方式的消息类型集合,该消息类型集合中包含至少一种消息类型,该消息类型集合中的消息类型均为预设类型。具体的,消息类型集合可以是上层的即时通讯应用在初始化imsdk时传入的配置参数。
66.而非预设类型的消息数据,也即上述非基础类型的消息数据,也即未包含在上述支持“快速发送”方式的消息类型集合中的消息类型。对于非预设类型的消息数据,由于发送此类消息数据的网络传输时长较长,因此采用“在执行将消息数据存储到数据库的过程中,向通讯服务端发送消息数据”这一“快速发送”方式,所能缩短的耗时显得微不足道,甚至不能为用户所感知,并且,由于其所采用的发送逻辑与预设类型的消息的发送逻辑不同,因此,发送非预设类型的消息数据时,并不能复用发送预设类型的消息数据的逻辑,因此公开实施例对于非预设类型的消息数据,采用现有发送逻辑,即:在将消息数据存储到数据库后,向通讯服务端发送消息数据。进而也不需要对其消息发送逻辑进行另外配置,从而减少开发成本。
67.基于此,在s202的一种实现方式中,如果s201中获取的消息数据的类型为预设类型,则在执行将消息数据存储到数据库的过程中,向通讯服务端发送消息数据。相应的,如果s201中获取的消息数据的类型不为预设类型,则在将消息数据存储到数据库后,向通讯服务端发送消息数据。
68.在另一些实施例中,对于数据量小于预设数据量的消息数据,采用“在执行将消息数据存储到数据库的过程中,向通讯服务端发送消息数据”这一“快速发送”方式,以缩短发送过程的耗时。基于此,在s202的一种实现方式中,如果s201中获取的消息数据的数据量小于预设数据量,则在执行将消息数据存储到数据库的过程中,向通讯服务端发送消息数据。
69.需要说明的是,待发送的消息数据可以包括多媒体数据和/或非多媒体数据。多媒体数据如图片、音频、视频等各类格式的文件;非多媒体数据如文字、表情等。在可能的实现
方式中,如果消息数据包括多媒体数据,则将多媒体数据上传至文件服务器,并获得文件服务器返回的多媒体数据的存储地址;根据多媒体数据的存储地址生成消息体;如果消息数据不包括多媒体数据,根据非多媒体数据生成消息体。在这种实现方式中,在待发送的消息数据中包含多媒体数据时,先将多媒体数据上传到文件服务器,获得多媒体数据的存储地址,再根据该存储地址生成消息体,而非直接根据多媒体数据生成消息体,从而降低消息数据的数据体量,降低网络传输的耗时。
70.基于此,可以将上述s202进一步理解为:在将所述消息体存储到数据库的过程中,向所述通讯服务端发送所述消息体。
71.由上述s202可知,存储消息数据的操作与向服务端发送消息数据的操作是同时执行的。这意味着,存储消息数据时,消息数据的实际状态为“发送中状态”,因此在理论上,可以在消息体存储到数据库时,将消息体直接标记为“发送中状态”,从而简化存储操作,降低数据存储过程的耗时,也即降低数据准备阶段的耗时。该“发送中状态”还可称为第二状态。基于此,在可能的实现方式中,s202具体可以包括:将上述消息体存储到数据库中,并将上述消息体的状态标记为第二状态;在执行将消息体存储到数据库中,并将消息体的状态标记为第二状态的过程中,向通讯服务端发送消息体。
72.另外,在执行消息发送过程时,由于某些原因(如网络、硬件)可能会导致消息发送失败,而却将消息体标记为“发送中状态”的情况,此类情况将造成数据在数据库中的状态与数据的实际状态不一致。基于此,在可能的实现方式中,s202具体可以包括:将上述消息体存储到数据库中,并将上述消息体的状态标记为第一状态(即初始状态),再将上述消息体的状态由第一状态更新为第二状态;在执行上述将消息体存储到数据库中、将上述消息体的状态标记为第一状态或者将上述消息体的状态由第一状态更新为第二状态的过程中,向通讯服务端发送消息体。这样,可以避免由于某些原因(如网络、硬件)可能会导致消息发送失败,而却将消息体标记为“发送中状态”的情况出现,保证数据在数据库中的状态与数据的实际状态一致,保证数据存储操作的安全性和稳定性。
73.在另一些实施例中,在待发送的消息数据包括多媒体数据的情况下,s202具体可以包括:在上传多媒体数据至文件服务器的过程中,将多媒体数据存储到数据库,并将多媒体数据的状态标记为第一状态;在向通讯服务端发送消息体的过程中,将数据库中的多媒体数据的状态更新为第二状态。在这些实施例中,无需等待获得多媒体数据的存储地址后,再存储根据存储地址生成的消息体,而是在上传多媒体数据至文件服务器的过程中,直接将多媒体数据存储到数据库,在从而节省数据存储操作的耗时,即节省数据准备阶段的耗时。
74.在可能的实现方式中,在根据文件服务器返回的多媒体数据的存储地址生成消息体后,再利用生成的消息体,替换数据库中对应的多媒体数据,并保持数据的状态为第二状态不变。
75.需要说明的是,多媒体数据可以是非预设类型的消息数据,也可以是预设类型的消息数据。相应的,非多媒体数据可以是预设类型的消息数据,也可以是非预设类型的消息数据。在s202的另一种实现方式中,如果s201中获取的消息数据的类型为预设类型,且不包含多媒体数据,则在执行将消息数据存储到数据库的过程中,向通讯服务端发送消息数据。相应的,如果s201中获取的消息数据的类型不为预设类型则在将消息数据存储到数据库
后,向通讯服务端发送消息数据。或者,如果s201中获取的消息数据包含多媒体数据,则将多媒体数据上传至文件服务器,并获得文件服务器返回的多媒体数据的存储地址;根据多媒体数据的存储地址生成消息体;将消息体存储到数据库后,向通讯服务端发送消息体。
76.由以上实施例可知,本公开实施例提供一种消息发送方法,该方法首先获取待发送的消息数据;然后将消息数据存储到数据库,以及,在执行将消息数据存储到数据库的过程中,向通讯服务端发送该消息数据;当接收到通讯服务端对消息数据的响应结果时,根据响应结果,对数据库中的消息数据的状态进行更新,以完成对消息数据的发送过程。可以看出,本公开实施例提供的消息发送方法中,消息准备阶段、网络传输阶段同时进行,这样,消息发送过程的耗时即为消息准备阶段、网络传输阶段中的较大耗时与发送结果确认阶段的耗时的和,从而缩短消息发送过程的耗时,缩短的时长即为消息准备阶段和网络传输阶段中的较小耗时。
77.另外,由于本公开实施例是在根据服务端的响应结果对数据库中的消息数据的状态更新完成后,才认为消息发送过程完成,即在发送结果确认阶段完成后,才向用户传达出消息发送完成的信息,进而在缩短消息发送过程耗时的同时,避免出现发送端和接收端的数据不一致的问题。
78.图5是根据一示例性实施例示出的一种消息发送装置框图,如图5所示,本公开实施例提供的消息发送装置50包括数据获取模块501,并行执行模块502和发送结果确认模块503。其中:
79.数据获取模块501,用于获取待发送的消息数据。例如,如图2所示,数据获取模块501可以用于执行s201。
80.并行执行模块502,用于将所述消息数据存储到数据库,以及,在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据。例如,如图2所示,并行执行模块502可以用于执行s202。
81.发送结果确认模块503,用于当接收到所述通讯服务端对所述消息数据的响应结果时,根据所述响应结果,对所述数据库中的所述消息数据的状态进行更新,以完成对所述消息数据的发送过程。例如,如图2所示,发送结果确认模块503可以用于执行s203。
82.在可能的实现方式中,所述并行执行模块502,具体用于:如果所述消息数据的类型为预设类型,则在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据,所述预设类型包括文字类型和表情类型中的至少一种;或者,如果所述消息数据的数据量小于预设数据量,则在执行所述将所述消息数据存储到数据库的过程中,向所述通讯服务端发送所述消息数据。
83.在可能的实现方式中,所述并行执行模块502,具体用于:如果所述消息数据包括所述多媒体数据,则将所述多媒体数据上传至文件服务器,并获得所述文件服务器返回的所述多媒体数据的存储地址;根据所述多媒体数据的存储地址生成消息体;如果所述消息数据不包括所述多媒体数据,根据所述消息数据生成消息体;在将所述消息体存储到数据库的过程中,向所述通讯服务端发送所述消息体。
84.在可能的实现方式中,所述并行执行模块502,具体用于:将所述消息体存储到所述数据库中,将所述消息体的状态标记为第一状态,所述第一状态用于表征所述消息体处于发送前的状态;将被标记为所述第一状态的所述消息体,由所述第一状态修改为第二状
态,所述第二状态用于表征所述消息体处于发送中的状态;在执行所述将所述消息体存储到所述数据库中、将所述消息体的状态标记为第一状态或者将所述消息体的状态由所述第一状态修改为第二状态的过程中,向所述通讯服务端发送所述消息体。
85.在可能的实现方式中,所述并行执行模块502,具体用于:将所述消息体存储到所述数据库中,并将所述消息体的状态标记为第二状态,所述第二状态用于表征所述消息体处于发送中的状态;在执行所述将所述消息体存储到所述数据库中,并将所述消息体的状态标记为第二状态的过程中,向所述通讯服务端发送所述消息体。
86.在可能的实现方式中,所述并行执行模块502,具体用于:在所述消息数据包括所述多媒体数据时,在所述请求生成模块上传所述多媒体数据至所述文件服务器的过程中,将所述多媒体数据存储到所述数据库,并将所述多媒体数据的状态标记为第一状态,所述第一状态用于表征所述多媒体数据处于发送前的状态;在向所述通讯服务端发送所述消息体的过程中,将所述数据库中的被标记为所述第一状态的所述多媒体数据,由所述第一状态修改为第二状态,所述第二状态用于表征所述消息体处于发送中的状态。
87.在可能的实现方式中,所述发送结果确认模块503,具体用于:如果所述响应结果表征消息发送成功,则将所述数据库中的所述消息数据的状态更新为第三状态,所述第三状态用于表征所述消息数据处于发送成功的状态;如果所述响应结果表征消息发送失败,则将所述数据库中的所述消息数据的状态更新为第四状态,所述第三状态用于表征所述消息数据处于发送成功的状态。
88.本公开实施例提供一种消息发送装置,该装置首先通过数据获取模块501获取待发送的消息数据;然后再通过并行执行模块502将消息数据存储到数据库,以及,在执行将消息数据存储到数据库的过程中,向通讯服务端发送该消息数据;当发送结果确认模块503接收到通讯服务端对消息的响应结果时,根据响应结果,对数据库中的消息数据的状态进行更新,以完成对消息数据的发送过程。可以看出,本公开实施例提供的消息发送装置中,消息准备阶段、网络传输阶段同时进行,这样,消息发送过程的耗时即为消息准备阶段、网络传输阶段中的较大耗时与发送结果确认阶段的耗时的和,从而缩短消息发送过程的耗时,缩短的时长即为消息准备阶段和网络传输阶段中的较小耗时。
89.另外,由于本公开实施例是在根据服务端的响应结果对数据库中的消息数据的状态更新完成后,才认为消息发送过程完成,即在发送结果确认阶段完成后,才向用户传达出消息发送完成的信息,进而在缩短消息发送过程耗时的同时,避免出现发送端和接收端的数据不一致的问题。
90.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
91.如图6所示,为本公开实施例提供的技术方案所适用的一种电子设备的结构示意图。图6中电子设备60包括但不限于:处理器601、存储器602、输入单元603、接口单元604、电源605及显示单元606。
92.处理器601是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。例如,处理器601被配置为执行存储器602中的可执行指令,以实现本公开实施例所提供的方
法。
93.处理器601可包括一个或多个处理单元;可选的,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。
94.存储器602可用于存储软件程序以及各种数据。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能单元所需的应用程序等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。可选地,存储器602可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、cd-rom、磁带、软盘和光数据存储设备等。
95.输入单元603可以为键盘、触摸屏等器件。
96.接口单元604为外部装置与电子设备60连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(i/o)端口、视频i/o端口、耳机端口等等。接口单元604可以用于接收来自外部装置的输入(例如,数据信息等)并且将接收到的输入传输到电子设备20内的一个或多个元件或者可以用于在电子设备60和外部装置之间传输数据。
97.电源605(比如:电池)可以用于为各个部件供电。可选的,电源605可以通过电源管理系统与处理器601逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
98.显示单元606用于显示用户界面(user interface,ui)。该用户界面可以包括图形、文本、图标、视频及其它们的任意组合。当显示单元606是显示屏的情况下,显示单元606还具有采集在显示单元606的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示单元606还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。
99.在一些实施例中,显示单元606可以为终端设备的前面板;显示单元606可以采用液晶显示屏(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等材质制备。在电子设备60为终端设备的情况下,该终端设备包括显示单元606。
100.可选的,本公开实施例中的计算机指令也可以称之为应用程序代码或系统,本公开实施例对此不作具体限定。
101.需要说明的是,图6所示的电子设备仅为示例,其不对本公开实施例可适用的电子设备构成限定。实际实现时,电子设备可以包括比图6中所示的更多或更少的设备或器件。
102.另外,本公开还提供一种计算机可读存储介质,当计算机可读存储介质中的指令由服务器的处理器执行时,使得电子设备能够执行如上述实施例所提供的方法。
103.另外,本公开还提供一种计算机程序产品,包括计算机指令,当计算机指令在服务器上运行时,使得服务器执行如上述实施例所提供的方法。
104.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
105.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1