请求结果同步返回方法、装置、终端设备及存储介质
文献发布时间:2023-06-19 19:28:50
技术领域
本发明属于通信技术领域,尤其涉及一种请求结果同步返回方法、装置、终端设备以及计算机可读存储介质。
背景技术
随着科技的快速发展,应用层通信协议已经成为通信技术领域中至关重要的一部分。
目前,在Web应用层通信场景中,针对基于Tcp(Transmission Control Protocol,传输控制协议)的常见且易于开发的协议有两种需要提到的现有技术方案,其中,第一类是基于短链接协议方案,如Http(Hyper Text Transfer Protocol,超文本传输协议),通常由HTTP客户端发起一个请求,创建一个到服务器指定端口的Tcp连接,HTTP服务器则在那个端口监听客户端的请求,一旦收到请求,服务器会向客户端返回一个状态;第二类是基于长链接协议方案,如WebSocket,WebSocket协议支持Web浏览器或者其他客户端应用程序与Web服务器之间的交互,具有较低的开销,便于实现客户端与服务器的实时数据传输。但是,第一类现有技术方案的缺点是,服务端不能主动向客户端发起请求获取客户端信息,除非客户端主动上报;第二类现有技术方案缺点是,不具备将收发的数据之间进行逻辑关联的能力。
综上,现有基于Tcp的通信协议存在无法同时实现双向通信和将收发数据进行逻辑关联的问题。
发明内容
本发明的主要目的在于提供一种请求结果同步返回方法、装置、终端设备以及计算机可读存储介质。旨在利用全双工通信的便捷,建立收发数据之间的逻辑关联,从而实现请求结果同步返回。
为了实现上述目的,本发明提供一种请求结果同步返回方法,所述请求结果同步返回方法应用于服务端,所述服务端包括发送逻辑模块;
所述请求结果同步返回方法包括:
建立与客户端之间的通信连接,并通过所述发送逻辑模块将请求指令和根据所述请求指令生成的消息标识封装为请求数据;
通过所述发送逻辑模块将所述请求数据发送至所述客户端,以供所述客户端将与所述请求指令对应的返回消息和所述消息标识封装为返回数据;
检测是否在预设时间内接收到由所述客户端发送的所述返回数据;
在检测到在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方。
可选地,在所述建立与客户端之间的通信连接的步骤之后,所述方法还包括:
生成与所述客户端对应的链接句柄,并将所述链接句柄和哈希表封装为链接封装体;
基于所述链接封装体开启读数据进程。
可选地,在所述通过所述发送逻辑模块将请求指令和根据所述请求指令生成的消息标识封装为请求数据的步骤之后,所述方法还包括:
通过所述发送逻辑模块将所述请求数据写入所述哈希表中的数据关联体。
可选地,所述通过所述发送逻辑模块将所述请求数据发送至所述客户端的步骤,包括:
通过所述发送逻辑模块将所述请求数据转换为预设数据格式,得到目标请求数据;
通过所述发送逻辑模块基于所述链接句柄,将所述目标请求数据发送至所述客户端。
可选地,在所述检测是否在预设时间内接收到由所述客户端发送的所述返回数据的步骤之后,所述方法还包括:
在检测到未在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将报错信号发送至发起所述请求指令的调用方。
可选地,在所述通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方的步骤之前,所述方法还包括:
通过所述读数据进程对所述返回数据进行解析,得到所述返回消息和所述消息标识,并根据所述消息标识在所述哈希表中确定目标数据关联体;
通过所述读数据进程将所述返回数据写入所述目标数据关联体,并发送结束信号至所述发送逻辑模块。
可选地,所述通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方的步骤,包括:
通过所述发送逻辑模块在接收到所述结束信号时,将所述返回消息发送至发起所述请求指令的调用方。
此外,为实现上述目的,本发明还提供一种请求结果同步返回装置,所述请求结果同步返回装置应用于服务端,所述服务端包括发送逻辑模块;
所述请求结果同步返回装置包括:
请求数据模块,建立与客户端之间的通信连接,并通过所述发送逻辑模块将请求指令和根据所述请求指令生成的消息标识封装为请求数据;
返回数据模块,通过所述发送逻辑模块将所述请求数据发送至所述客户端,以供所述客户端将与所述请求指令对应的返回消息和所述消息标识封装为返回数据;
检测模块,检测是否在预设时间内接收到由所述客户端发送的所述返回数据;
调用方模块,在检测到在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方。
此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的请求结果同步返回程序,所述终端设备的请求结果同步返回程序被所述处理器执行时实现如上所述的请求结果同步返回方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有请求结果同步返回程序,所述请求结果同步返回程序被处理器执行时实现如上所述的请求结果同步返回方法的步骤。
本发明实施例提出的一种请求结果同步返回方法、装置、终端设备以及计算机可读存储介质,所述方法应用于服务端,所述服务端包括发送逻辑模块;所述方法通过建立与客户端之间的通信连接,并通过所述发送逻辑模块将请求指令和根据所述请求指令生成的消息标识封装为请求数据;通过所述发送逻辑模块将所述请求数据发送至所述客户端,以供所述客户端将与所述请求指令对应的返回消息和所述消息标识封装为返回数据;检测是否在预设时间内接收到由所述客户端发送的所述返回数据;在检测到在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方。
本发明实施例通过服务端建立与客户端之间的通信连接,并在成功建立通信连接后通过服务端的发送逻辑模块,将请求指令和根据该请求指令生成的消息标识封装为请求数据,然后通过该发送逻辑模块将封装好的请求数据发送至客户端,以供客户端将与该请求数据中的请求指令对应的返回消息和上述消息标识封装为返回数据,服务器检测是否在预设时间内接收到由客户端返回的返回数据,在检测到在预设时间内接收到该返回数据时,通过该发送逻辑模块将返回数据中的返回消息发送至发起该请求指令的业务调用方。如此,本发明利用全双工通信的便捷,建立了收发数据之间的逻辑关联,从而实现请求结果同步返回。
附图说明
图1是本发明实施例方案涉及的终端设备硬件运行环境的设备结构示意图;
图2为本发明请求结果同步返回方法第一实施例的步骤流程示意图;
图3为本发明请求结果同步返回方法的一实施例所涉及的链接封装体结构示意图;
图4为本发明请求结果同步返回方法的一实施例所涉及的数据关联体结构示意图;
图5为本发明请求结果同步返回方法的一实施例所涉及的请求结果同步返回流程示意图;
图6为本发明请求结果同步返回装置一实施例的功能模块示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及终端设备的硬件运行环境的设备结构示意图。
本发明实施例终端设备可以是应用于通信技术领域的服务端终端设备。此外,该服务端包括发送逻辑模块。具体地,该终端设备可以是智能手机、PC(PerSonal Computer,个人计算机)、平板电脑、便携计算机等等。
如图1所示,该终端设备可以包括:处理器1001,例如CPU,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(DiSplay)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如Wi-Fi接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及请求结果同步返回程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的请求结果同步返回程序,并执行如下操作:
建立与客户端之间的通信连接,并通过所述发送逻辑模块将请求指令和根据所述请求指令生成的消息标识封装为请求数据;
通过所述发送逻辑模块将所述请求数据发送至所述客户端,以供所述客户端将与所述请求指令对应的返回消息和所述消息标识封装为返回数据;
检测是否在预设时间内接收到由所述客户端发送的所述返回数据;
在检测到在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方。
可选地,处理器1001还可以用于调用存储器1005中存储的请求结果同步返回程序,在所述建立与客户端之间的通信连接的步骤之后,还执行如下5操作:
生成与所述客户端对应的链接句柄,并将所述链接句柄和哈希表封装为链接封装体;
基于所述链接封装体开启读数据进程。
可选地,处理器1001还可以用于调用存储器1005中存储的请求结果同0步返回程序,在所述通过所述发送逻辑模块将请求指令和根据所述请求指令生成的消息标识封装为请求数据的步骤之后,还执行如下操作:
通过所述发送逻辑模块将所述请求数据写入所述哈希表中的数据关联体。
可选地,处理器1001还可以用于调用存储器1005中存储的请求结果同步返回程序,并执行如下操作:
5通过所述发送逻辑模块将所述请求数据转换为预设数据格式,得到目标请求数据;
通过所述发送逻辑模块基于所述链接句柄,将所述目标请求数据发送至所述客户端。
可选地,处理器1001还可以用于调用存储器1005中存储的请求结果同0步返回程序,在所述检测是否在预设时间内接收到由所述客户端发送的所述返回数据的步骤之后,还执行如下操作:
在检测到未在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将报错信号发送至发起所述请求指令的调用方。
可选地,处理器1001还可以用于调用存储器1005中存储的请求结果同5步返回程序,在所述通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方的步骤之前,还执行如下操作:
通过所述读数据进程对所述返回数据进行解析,得到所述返回消息和所述消息标识,并根据所述消息标识在所述哈希表中确定目标数据关联体;
通过所述读数据进程将所述返回数据写入所述目标数据关联体,并发送0结束信号至所述发送逻辑模块。
可选地,处理器1001还可以用于调用存储器1005中存储的请求结果同步返回程序,并执行如下操作:
通过所述发送逻辑模块在接收到所述结束信号时,将所述返回消息发送至发起所述请求指令的调用方。
基于上述的终端设备,提出本发明请求结果同步返回方法的各实施例。
目前,在Web应用层通信场景中,针对基于Tcp的常见且易于开发的协议有两种需要提到的现有技术方案,其中,第一类是基于短链接协议方案,如Http,通常由HTTP客户端发起一个请求,创建一个到服务器指定端口的Tcp连接,HTTP服务器则在那个端口监听客户端的请求,一旦收到请求,服务器会向客户端返回一个状态;第二类是基于长链接协议方案,如WebSocket,WebSocket协议支持Web浏览器或者其他客户端应用程序与Web服务器之间的交互,具有较低的开销,便于实现客户端与服务器的实时数据传输。但是,第一类现有技术方案的缺点是,服务端不能主动向客户端发起请求获取客户端信息,除非客户端主动上报;第二类现有技术方案缺点是,不具备将收发的数据之间进行逻辑关联的能力。
针对上述现象,本发明提出一种请求结果同步返回方法。本发明请求结果同步返回方法应用于服务端,所述服务端包括发送逻辑模块。
本发明请求结果同步返回方法通过服务端建立与客户端之间的通信连接,并在成功建立通信连接后通过服务端的发送逻辑模块,将请求指令和根据该请求指令生成的消息标识封装为请求数据,然后通过该发送逻辑模块将封装好的请求数据发送至客户端,以供客户端将与该请求数据中的请求指令对应的返回消息和上述消息标识封装为返回数据,服务器检测是否在预设时间内接收到由客户端返回的返回数据,在检测到在预设时间内接收到该返回数据时,通过该发送逻辑模块将返回数据中的返回消息发送至发起该请求指令的业务调用方。如此,本发明利用全双工通信的便捷,建立了收发数据之间的逻辑关联,从而实现请求结果同步返回。
请参照图2,图2为本发明请求结果同步返回方法第一实施例的流程示意图。需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,本发明请求结果同步返回方法当然也可以以不同于此处的顺序执行所示出或描述的步骤。
在本发明请求结果同步返回方法的第一实施例中,本发明请求结果同步返回方法包括:
步骤S10,建立与客户端之间的通信连接,并通过所述发送逻辑模块将请求指令和根据所述请求指令生成的消息标识封装为请求数据。
在本实施例中,服务端建立与客户端之间的通信连接,然后通过服务端的发送逻辑模块将待发送的请求指令和根据该请求指令生成的消息标识一起封装为请求数据。
示例性地,首先,服务端实时监听链接请求,在客户端向服务端发起ws(Websocket,双向通信协议)链接请求时,服务端接收该ws链接请求,并建立起与客户端之间的通信连接,然后通过服务端的发送逻辑模块接收由业务调用方发起的请求指令,其中,该请求指令就是实际请求消息,并根据该请求指令生成一个全局唯一字符串作为消息唯一标识,即消息标识,需要说明的是,请求指令的消息类型为通信双方约定的数据类型,比如将实际通信用到的数据归类为所需类型,该所需类型可以是客户端主动上报,客户端对服务端的响应数据等。最后,通过发送逻辑模块将实际请求消息、消息唯一标识和消息类型封装为一体,作为请求数据。
步骤S20,通过所述发送逻辑模块将所述请求数据发送至所述客户端,以供所述客户端将与所述请求指令对应的返回消息和所述消息标识封装为返回数据;
在本实施例中,服务端通过发送逻辑模块将封装好的请求数据发送至客户端,以供客户端可以根据该请求数据中的请求指令,确定需要返回的返回消息,并保持消息标识不变,将返回数据和消息标识一起封装为返回数据。
示例性地,服务器通过发送逻辑模块将请求数据发送至客户端,客户端在接收到该请求数据后,对该请求数据进行解析,得到实际请求消息、消息唯一标识和消息类型,然后根据实际请求消息的要求,确定实际返回消息,并保持消息唯一标识不变,另外,此时的消息类型为客户端对服务端的响应数据,最后,由客户端将实际返回消息、消息唯一标识和消息类型封装为一体,作为返回数据,并根据Websocket要求的格式写入与该服务端对应的链接句柄,从而发送至该服务端。
需要说明的是,链接句柄为是服务端与客户端链接成功后生成的关联数据结构,是用于发送ws数据的底层通道。在服务端与客户端链接成功后,服务端会生成该客户端对应的链接句柄,保存着该客户端的IP(Internet Protocol,网络互连协议)和端口信息;客户端也会生成与该服务端对应的链接句柄,保存着该服务端的IP和端口信息。其中链接句柄还提供读写能力。
步骤S30,检测是否在预设时间内接收到由所述客户端发送的所述返回数据;
在本实施例中,服务端检测是否在预设时间内收到由客户端发送的返回数据。
示例性地,在服务器的发送逻辑模块将服务端的请求数据写入哈希表的数据关联体之后,发送逻辑模块的定时任务按照预先设置的默认超时时长开始计时,其中,默认超时时长就是预设时间。
步骤S40,在检测到在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方。
在本实施例中,服务端在检测到在预设时间内就接收到由客户端发送的返回数据时,通过发送逻辑模块将返回数据中的返回消息发送到发起本次请求的调用方。
进一步地,在一种可行的实施例中,在上述步骤S30之后,本发明请求结果同步返回方法,还可以包括:
步骤A10,在检测到未在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将报错信号发送至发起所述请求指令的调用方。
在本实施例中,服务端在检测到未在预设时间内接收到客户端返回的返回数据时,通过发送逻辑模块将报错信号发送至发起本次请求的调用方。
示例性地,在服务端维护的数据关联体中包括报错信息的数据结构,当服务端检测到未在预设时间内接收到返回数据时,服务端的利用链接封装体开启的读数据进程就发送报错信号至服务端的发送逻辑模块,发送逻辑模块确定本次请求已超时,并将报错信号返回给发起本次请求的调用方。
在本实施例中,本发明请求结果同步返回方法通过服务端建立与客户端之间的通信连接,然后通过服务端的发送逻辑模块将待发送的请求指令和根据该请求指令生成的消息标识一起封装为请求数据;服务端通过发送逻辑模块将封装好的请求数据发送至客户端,以供客户端可以根据该请求数据中的请求指令,确定需要返回的返回消息,并保持消息标识不变,将返回数据和消息标识一起封装为返回数据;服务端检测是否在预设时间内收到由客户端发送的返回数据;服务端在检测到在预设时间内就接收到由客户端发送的返回数据时,通过发送逻辑模块将返回数据中的返回消息发送到发起本次请求的调用方;服务端在检测到未在预设时间内接收到客户端返回的返回数据时,通过发送逻辑模块将报错信号发送至发起本次请求的调用方。
如此,本发明实施例通过由服务端建立与客户端之间的通信连接,并在成功建立通信连接后通过服务端的发送逻辑模块,将请求指令和根据该请求指令生成的消息标识封装为请求数据,然后通过该发送逻辑模块将封装好的请求数据发送至客户端,以供客户端将与该请求数据中的请求指令对应的返回消息和上述消息标识封装为返回数据,服务器检测是否在预设时间内接收到由客户端返回的返回数据,在检测到在预设时间内接收到该返回数据时,通过该发送逻辑模块将返回数据中的返回消息发送至发起该请求指令的业务调用方。如此,本发明利用全双工通信的便捷,建立了收发数据之间的逻辑关联,从而实现请求结果同步返回。
进一步地,基于上述本发明请求结果同步返回方法的第一实施例,提出本发明请求结果同步返回方法的第二实施例。
在本实施例中,在上述步骤S10中,“建立与客户端之间的通信连接”的步骤之后,本发明请求结果同步返回方法,还可以包括:
步骤B10,生成与所述客户端对应的链接句柄,并将所述链接句柄和哈希表封装为链接封装体;
在本实施例中,服务端在成功建立与客户端之间的通信连接之后,生成与该客户端对应的链接句柄,并将该链接句柄和哈希表一起封装为链接封装体。
示例性地,服务端在建立与客户端之间的通信连接后,生成该客户端对应的链接句柄,然后将该链接句柄进行数据封装,同时添加其他信息。如图3所示,本发明链接封装体结构示意图,封装信息包括但不限于链接原始句柄、hash表的读写锁、链接断开、报错等异常监控标志、默认超时时长和维护请求的hash表等。
步骤B20,基于所述链接封装体开启读数据进程。
在本实施例中,服务端在建立链接封装体后,利用该链接封装体开启一个后台运行的读数据进程。
需要说明的是,ws链接句柄提供读写能力,但读写进程需要编程人员维护。
进一步地,在一种可行的实施例中,在上述步骤S10之后,本发明请求结果同步返回方法,还可以包括:
步骤C10,通过所述发送逻辑模块将所述请求数据写入所述哈希表中的数据关联体。
在本实施例中,服务端通过发送逻辑模块将封装好的请求数据写入哈希表的数据关联体中。
示例性地,如图4所示,本发明数据关联体结构示意图,链接封装体中用于维护指令请求的hash表采用常规数据结构,key为一定长度的唯一字符串,value为请求数据和返回数据的消息关联结构体,另外,value还包括结束信号量和报错信息。需要说明的是,往返数据关联结构体中请求数据和返回数据共用一种数据结构。
示例性地,服务端在将实际请求消息、消息唯一标识和消息类型封装为请求数据之后,将该封装好的请求数据写入hash表的数据关联体中,同时,发送逻辑模块开启对数据关联体中的结束信号量的监听,并根据默认超时参数开启定时器,以判断后续服务端是否在预设时间内接收到由客户端发返回的返回数据。
进一步地,在一种可行的实施例中,上述步骤S20中,“通过所述发送逻辑模块将所述请求数据发送至所述客户端”的步骤,可以包括:
步骤S201,通过所述发送逻辑模块将所述请求数据转换为预设数据格式,得到目标请求数据;
步骤S202,通过所述发送逻辑模块基于所述链接句柄,将所述目标请求数据发送至所述客户端。
在本实施例中,服务端通过发送逻辑模块将封装好的请求数据转换为预设数据格式,得到转换后的目标请求数据,然后基于与该客户端对应的链接句柄,将目标请求数据发送到该客户端。
示例性地,服务端通过发送逻辑模块将请求数据转换成Websocket要求的格式,该格式可以是字符串或者二进制等等,即预设格式,得到转换后的请求数据,即目标请求数据,然后将该目标请求数据基于客户端对应的链接句柄将该目标请求数据发送至该客户端,然后,由链接句柄写方法将该目标请求数据转换为具体的IP+端口进行数据传递。
进一步地,在一种可行的实施例中,在上述步骤S40中,“通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方”的步骤之前,本发明请求结果同步返回方法,还可以包括:
步骤D10,通过所述读数据进程对所述返回数据进行解析,得到所述返回消息和所述消息标识,并根据所述消息标识在所述哈希表中确定目标数据关联体;
在本实施例中,通过服务端生成的读数据进程对客户端返回的返回数据进行数据解析,得到返回消息和消息标识,然后根据该消息标识在哈希表中确定目标数据关联体。
示例性地,在服务端的读数据进程对返回数据进行解析,得到消息唯一标识时,根据该消息唯一标识在哈希表中确定该消息唯一标识对应的目标数据关联体。需要说明的是,当同一客户端同一时间返回多个返回数据或者该客户端发起数据请求时,哈希表中存在多个数据关联体,且每个数据关联体都有不同的消息唯一标识。
步骤D20,通过所述读数据进程将所述返回数据写入所述目标数据关联体,并发送结束信号至所述发送逻辑模块。
在本实施例中,服务端通过读数据进程将客户端返回的返回数据写入目标数据关联体中,并向发送逻辑模块发送结束信号。
示例性地,服务端读数据进程在接收到客户端返回的返回数据之后,将该返回数据写入到相同消息唯一标识的请求数据所在的数据关联体中,即目标数据关联体,然后由读数据进程给该目标数据关联体中的结束信号量发送结束信号,由于发送逻辑模块对该结束信号量进行监听,所以可以告知发送逻辑模块本次请求已结束。
进一步地,在一种可行的实施例中,上述步骤S40中,“通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方”的步骤,可以包括:
步骤S401,通过所述发送逻辑模块在接收到所述结束信号时,将所述返回消息发送至发起所述请求指令的调用方。
在本实施例中,服务端通过发送逻辑模块在接收到读数据进程发送的结束信号时,将客户端返回的返回消息发送至发起本次请求的调用方。
示例性地,如图5所示,请求结果同步返回流程示意图,首先由客户端发起ws链接请求,服务端在接收到该链接请求后,成功建立与客户端之间的通信连接;服务端对数据关联结构体中的数据结构进行初始化,得到初始化后的数据关联结构体;然后对链接封装体所需的数据进行封装;封装完成之后,利用该链接封装体开启一个服务端的读数据进程;业务调用方发起控制指令给服务端的发送逻辑模块,并通过该发送逻辑模块将控制指令放到哈希表中的数据关联结构体中;开启定时器和结束信号量监听;通过服务端的发送逻辑模块将请求数据发送给客户端;客户端接收到请求数据之后,根据请求指令向写进程写返回数据,并返回给服务端;服务端的读进程解析返回数据,得到消息唯一标识,根据该消息唯一标识在哈希表中查找目标关联结构体,并将返回数据写入该目标关联结构体;根据消息唯一标识确定目标数据关联体中的信号量,并向信号量发送结束信号,将返回数据中的实际消息通过信号量发送出去,其中,信号量也是一种消息通道,接收方收到数据也即代表收到信号;通过发送逻辑模块将返回数据中的实际消息返回给调用方,其中发送逻辑模块实际为调用方的代理,代理调用方处理信号量,为实际信号量接受者,负责在收到信号后将数据返回给调用方。
在本实施例中,本发明请求结果同步返回方法通过服务端在成功建立与客户端之间的通信连接之后,生成与该客户端对应的链接句柄,并将该链接句柄和哈希表一起封装为链接封装体;服务端在建立链接封装体后,利用该链接封装体开启一个后台运行的读数据进程;服务端通过发送逻辑模块将封装好的请求数据写入哈希表的数据关联体中;服务端通过发送逻辑模块将封装好的请求数据转换为预设数据格式,得到转换后的目标请求数据,然后基于与该客户端对应的链接句柄,将目标请求数据发送到该客户端;通过服务端生成的读数据进程对客户端返回的返回数据进行数据解析,得到返回消息和消息标识,然后根据该消息标识在哈希表中确定目标数据关联体;服务端通过读数据进程将客户端返回的返回数据写入目标数据关联体中,并向发送逻辑模块发送结束信号;服务端通过发送逻辑模块在接收到读数据进程发送的结束信号时,将客户端返回的返回消息发送至发起本次请求的调用方。
如此,本发明用了全双工同信的便捷,且在WebSocket的基础上自定义了应用层上的同步逻辑,具体的,建立了链接封装体结构和数据关联体结构,从而在全双工通信的基础上,实现往返数据的逻辑关联。
此外,本发明实施例还提供一种请求结果同步返回装置。
请参照图6,图6为本发明请求结果同步返回装置一实施例的功能模块示意图,如图6所示,本发明请求结果同步返回装置包括:
请求数据模块10,用于建立与客户端之间的通信连接,并通过所述发送逻辑模块将请求指令和根据所述请求指令生成的消息标识封装为请求数据;
返回数据模块20,用于通过所述发送逻辑模块将所述请求数据发送至所述客户端,以供所述客户端将与所述请求指令对应的返回消息和所述消息标识封装为返回数据;
检测模块30,用于检测是否在预设时间内接收到由所述客户端发送的所述返回数据;
调用方模块40,用于在检测到在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将所述返回消息发送至发起所述请求指令的调用方。
可选地,本发明请求结果同步返回装置,还包括:
链接封装体模块,用于生成与所述客户端对应的链接句柄,并将所述链接句柄和哈希表封装为链接封装体;
读数据进程模块,用于基于所述链接封装体开启读数据进程。
可选地,本发明请求结果同步返回装置,还包括:
数据关联体模块,用于通过所述发送逻辑模块将所述请求数据写入所述哈希表中的数据关联体。
可选地,返回数据模块20,包括:
目标请求数据单元,用于通过所述发送逻辑模块将所述请求数据转换为预设数据格式,得到目标请求数据;
发送单元,用于通过所述发送逻辑模块基于所述链接句柄,将所述目标请求数据发送至所述客户端。
可选地,本发明请求结果同步返回装置,还包括:
超时模块,用于在检测到未在所述预设时间内接收到所述返回数据时,通过所述发送逻辑模块将报错信号发送至发起所述请求指令的调用方。
可选地,本发明请求结果同步返回装置,还包括:
目标数据关联体模块,用于通过所述读数据进程对所述返回数据进行解析,得到所述返回消息和所述消息标识,并根据所述消息标识在所述哈希表中确定目标数据关联体;
结束信号模块,用于通过所述读数据进程将所述返回数据写入所述目标数据关联体,并发送结束信号至所述发送逻辑模块。
可选地,调用方模块40,包括:
调用方单元,用于通过所述发送逻辑模块在接收到所述结束信号时,将所述返回消息发送至发起所述请求指令的调用方。
本发明还提供一种计算机存储介质,该计算机存储介质上存储有请求结果同步返回程序,上述请求结果同步返回程序被处理器执行时实现如以上任一项实施例所述的请求结果同步返回程序方法的步骤。
本发明计算机存储介质的具体实施例与上述本发明请求结果同步返回程序方法各实施例基本相同,在此不作赘述。
本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如以上任一项实施例所述的本发明请求结果同步返回方法的步骤,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是TWS耳机等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
- 综合报告生成方法、装置、终端设备和可读存储介质
- 分体式终端设备的屏显控制方法、装置及存储介质
- 限制网速的方法、装置、终端设备和存储介质
- 一种着装检查方法、装置、终端设备及计算机存储介质
- 同步请求转异步处理的方法、系统、终端设备及存储介质
- 多版本请求返回方法、装置、计算机设备及可读存储介质