本发明涉及通信异常检测,具体涉及一种消息发送失败检测方法及装置、存储介质、设备。
背景技术:
1、现有的websocket消息发送时存在的以下问题:当创建websocket连接后往消息队列发送消息,若服务端出现异常或客户端切换账户导致原连接被迫中断时客户端无法接受到已发出的消息回执,导致无法修改该消息的发送状态,从而影响业务。目前检测消息发送状态的判断方法主要是通过send方法返回值来判断。在使用okhttp的websocket时,调用其send方法尝试排队,消息text以utf-8编码并作为文本消息的数据发送。如果消息已排队,则此方法返回true。溢出消息缓冲区的消息将被拒绝,并触发此web套接字的正常关闭。在这种情况下,此方法返回false,以及在此web套接字关闭、关闭或取消的任何其他情况下返回false。但此方法只能判断用户发送的文本消息是否已在排队发送,并不能确定是否成功发送至服务器。
技术实现思路
1、为此,本发明提供一种消息发送失败检测方法及装置、存储介质、设备,用以解决现有技术中无法准确判断用户通过客户端发送至服务器的消息是否发送成功或失败的技术问题。
2、为实现以上目的,本发明采用如下技术方案:
3、依据本发明第一方面,本发明提供一种消息发送失败检测方法,所述方法包括:
4、针对客户端和服务器创建基于websocket网络协议的通讯连接;
5、所述客户端接收用户输入的消息文本,对所述消息文本进行封装,得到目标消息对象;其中,所述目标消息对象至少包括所述消息文本的输入时间和发送所述消息文本的结果回调接口;
6、将所述目标消息对象保存于消息缓存池中,并通过所述websocket网络协议向所述服务器发送所述目标消息对象;
7、基于所述结果回调接口确定发送所述目标消息对象的结果回调时间,根据预设时间范围在所述消息缓存池中筛选结果回调超时的目标消息对象;
8、将所述结果回调超时的目标消息对象对应的消息文本作为发送失败消息。
9、可选地,所述对所述消息文本进行封装,包括:
10、对所述消息文本、所述消息文本的输入时间以及发送所述消息文本的结果回调接口进行封装。
11、可选地,所述将所述目标消息对象保存于消息缓存池中,包括:
12、创建所述消息文本唯一对应的消息标识;
13、将所述消息标识作为key值,所述消息标识对应的目标消息对象作为value值;
14、利用键值对的形式将所述消息标识及对应的目标消息对象保存于所述消息缓存池中。
15、可选地,所述基于所述结果回调接口确定发送所述目标消息对象的结果回调时间,包括:
16、判断所述结果回调接口是否接收到发送所述目标消息对象后服务器返回的结果回调数据;
17、若所述结果回调接口接收到所述结果回调数据,将所述结果回调数据的接收时间作为结果回调时间。
18、可选地,所述方法还包括:
19、若所述结果回调接口未接收到所述结果回调数据,则所述目标消息对象的结果回调超时。
20、可选地,所述根据预设时间范围在所述消息缓存池中筛选结果回调超时的目标消息对象,包括:
21、根据目标消息对象的结果回调时间和所述输入时间计算回调时间差,判断所述回调时间差是否包含在所述预设时间范围内;
22、若所述回调时间差不包含在所述预设时间范围内,则所述目标消息对象的结果回调超时。
23、可选地,所述方法还包括:
24、若所述回调时间差包含在所述预设时间范围内,则所述目标消息对象的结果回调及时;
25、将已判断结果回调及时或结果回调超时的目标消息对象及对应的消息标识从所述消息缓存池中移除。
26、依据本发明第二方面,本发明提供一种消息发送失败检测装置,所述装置包括:
27、连接建立模块,用于针对客户端和服务器创建基于websocket网络协议的通讯连接;
28、消息封装模块,用于所述客户端接收用户输入的消息文本,对所述消息文本进行封装,得到目标消息对象;其中,所述目标消息对象至少包括所述消息文本的输入时间和发送所述消息文本的结果回调接口;
29、消息发送模块,用于将所述目标消息对象保存于消息缓存池中,并通过所述websocket网络协议向所述服务器发送所述目标消息对象;
30、超时判断模块,用于基于所述结果回调接口确定发送所述目标消息对象的结果回调时间,根据预设时间范围在所述消息缓存池中筛选结果回调超时的目标消息对象;
31、结果确认模块,用于将所述结果回调超时的目标消息对象对应的消息文本作为发送失败消息。
32、依据本发明第三方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如本发明第一方面中任一项所述的消息发送失败检测方法。
33、依据本发明第四方面,本发明提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如本发明第一方面中任一项所述的消息发送失败检测方法。
34、本发明采用以上技术方案,至少具备以下有益效果:
35、通过本发明,针对客户端和服务器创建基于websocket网络协议的通讯连接;所述客户端接收用户输入的消息文本,对所述消息文本进行封装,得到目标消息对象;将所述目标消息对象保存于消息缓存池中,并通过所述websocket网络协议向所述服务器发送所述目标消息对象;基于所述结果回调接口确定发送所述目标消息对象的结果回调时间,根据预设时间范围在所述消息缓存池中筛选结果回调超时的目标消息对象;将所述结果回调超时的目标消息对象对应的消息文本作为发送失败消息。由此,将携带有结果回调接口的目标消息对象存储于消息缓存池,筛选消息缓存池中结果回调超时的消息对象,标记消息文本发送失败同时从消息缓存池中移除,从而准确判断消息是否发送成功。另外,本发明还适用于复杂的业务场景,不会出现发送的消息无回执情况,可以自定义判断超时的时间阀值,满足更多的业务需求。
36、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
1.一种消息发送失败检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述消息文本进行封装,包括:
3.根据权利要求2所述的方法,其特征在于,所述将所述目标消息对象保存于消息缓存池中,包括:
4.根据权利要求1所述的方法,其特征在于,所述基于所述结果回调接口确定发送所述目标消息对象的结果回调时间,包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述根据预设时间范围在所述消息缓存池中筛选结果回调超时的目标消息对象,包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.一种消息发送失败检测装置,其特征在于,所述装置包括:
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1~7任一项所述的消息发送失败检测方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1~7中任一项所述的消息发送失败检测方法。