CN116192482A - 基于WebSocket实现跨容器通信的方法和装置 - Google Patents
基于WebSocket实现跨容器通信的方法和装置 Download PDFInfo
- Publication number
- CN116192482A CN116192482A CN202310088861.9A CN202310088861A CN116192482A CN 116192482 A CN116192482 A CN 116192482A CN 202310088861 A CN202310088861 A CN 202310088861A CN 116192482 A CN116192482 A CN 116192482A
- Authority
- CN
- China
- Prior art keywords
- server
- request
- communication
- container
- message
- 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.)
- Pending
Links
- 230000006854 communication Effects 0.000 title claims abstract description 231
- 238000004891 communication Methods 0.000 title claims abstract description 231
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000007175 bidirectional communication Effects 0.000 claims abstract description 57
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000003993 interaction Effects 0.000 abstract description 23
- 238000013507 mapping Methods 0.000 abstract description 11
- 238000011161 development Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Medical Treatment And Welfare Office Work (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供的一种基于WebSocket实现跨容器通信的方法和装置。该方法包括:目标容器内的第一服务器可以接收到目标容器外的第二服务器通过第一服务器与第二服务器的双向通信连接发送的通信请求,然后获取该通信请求对应的请求结果,并根据该请求结果通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体,使得第二服务器根据消息返回体,与第一服务器进行通信。例如,双向通信连接可以是WebSocket连接,无需进行网络映射,使得容器内外的应用程序进行Http服务交互更加灵活,而且容器内应用程序主动发起WebSocket连接,对容器没有侵入性,保证了容器的网络安全。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种基于WebSocket实现跨容器通信的方法和装置。
背景技术
Docker容器是一个开源的应用容器引擎,开发者可以以统一的方式打包应程序以及依赖包到一个可移植的容器中,然后发布到任何安装了Docker引擎的服务器上(例如Linux服务器、windows服务器等),可以实现虚拟化。
在相关技术中,当容器内的应用程序向容器外的应用程序提供Http服务时,需要使用容器提供的网络映射访问方式,在启动容器时指定映射的端口,使得容器外的应用程序可以根据该端口访问容器内的应用程序。
但是,当容器内的应用程序的端口是动态生成的,由于端口难以预知,这种情况下无法提前绑定端口,无法实现Http服务交互。
发明内容
本申请提供一种基于WebSocket实现跨容器通信的方法和装置,用以解决相关技术中在无法提前绑定端口的情况下,无法实现Http服务交互的问题。
第一方面,本申请提供一种基于WebSocket实现跨容器通信的方法,应用于目标容器内的第一服务器,所述方法包括:
接收所述目标容器外的第二服务器发送的通信请求;
获取所述通信请求对应的请求结果;
根据所述请求结果,通过所述第一服务器与所述第二服务器的双向通信连接,向所述第二服务器发送消息返回体,所述消息返回体用于实现所述第一服务器与所述第二服务器的通信。
在一种可能的实施方式中,所述获取所述通信请求对应的请求结果,包括:
对所述通信请求进行解析处理,得到所述通信请求的统一资源定位符URL地址和请求参数;
基于所述URL地址和所述请求参数,调用Http服务得到所述Http服务的调用结果;
根据所述Http服务的调用结果,确定所述请求结果。
在一种可能的实施方式中,所述通过所述第一服务器与所述第二服务器的双向通信连接,向所述第二服务器发送消息返回体,包括:
对所述请求结果进行解析处理,构建所述消息返回体;
根据所述通信请求,确定所述双向通信连接;
通过所述双向通信连接,向所述第二服务器发送所述消息返回体。
在一种可能的实施方式中,所述方法还包括:
与所述第二服务器建立所述双向通信连接;
开启本地的Http服务。
第二方面,本申请提供一种基于WebSocket实现跨容器通信的方法,应用于目标容器外的第二服务器,所述方法包括:
获取通信请求,所述通信请求包括Http请求的URL地址和请求参数;
通过所述第二服务器与所述目标容器内的第一服务器的双向通信连接,向所述第一服务器发送所述通信请求;
接收消息返回体,并根据所述消息返回体,与所述第一服务器进行通信,所述消息返回体用于实现所述第一服务器与所述第二服务器的通信。
在一种可能的实施方式中,所述获取通信请求,包括:
获取Http请求,所述Http请求中包括所述Http请求的地址和请求参数;
根据所述URL地址和所述请求参数,确定所述通信请求。
在一种可能的实施方式中,所述通过所述第二服务器与所述目标容器内的第一服务器的双向通信连接,向所述第一服务器发送所述通信请求,包括:
根据所述URL地址和所述请求参数,确定所述第二服务器与所述第一服务器的双向通信连接;
通过所述双向通信连接,向所述第一服务器发送所述通信请求。
在一种可能的实施方式中,所述接收消息返回体,并根据所述消息返回体,与所述第一服务器进行通信,包括:
接收所述第一服务器发送的消息返回体;
根据所述消息返回体,确定目标调用方线程;
恢复所述目标调用方线程的运行;
对所述消息返回体进行解析处理,得到Http返回消息体,并向上层调用方发送所述Http返回消息体,所述Http返回消息体用于指示通信建立连接完成。
在一种可能的实施方式中,所述方法还包括:
启动双向通信协议监听服务;
当监听到所述目标容器内的第一服务器的连接请求,与所述第一服务器建立所述双向通信连接。
第三方面,本申请提供一种基于WebSocket实现跨容器通信的装置,包括:
接收模块,用于接收目标容器外的第二服务器发送的通信请求;
获取模块,用于获取所述通信请求对应的请求结果;
发送模块,用于根据所述请求结果,通过第一服务器与所述第二服务器的双向通信连接,向所述第二服务器发送消息返回体,所述消息返回体用于实现所述第一服务器与所述第二服务器的通信。
在一种可能的实施方式中,所述获取模块具体用于:
对所述通信请求进行解析处理,得到所述通信请求的统一资源定位符URL地址和请求参数;
基于所述URL地址和所述请求参数,调用Http服务得到所述Http服务的调用结果;
根据所述Http服务的调用结果,确定所述请求结果。
在一种可能的实施方式中,所述发送模块具体用于:
对所述请求结果进行解析处理,构建所述消息返回体;
根据所述通信请求,确定所述双向通信连接;
通过所述双向通信连接,向所述第二服务器发送所述消息返回体。
在一种可能的实施方式中,所述装置还包括:建立模块;
所述建立模块具体用于:
与所述第二服务器建立所述双向通信连接;
开启本地的Http服务。
第四方面,本申请提供一种基于WebSocket实现跨容器通信的装置,包括:
获取模块,用于获取通信请求,所述通信请求包括Http请求的地址和请求参数;
发送模块,用于通过第二服务器与目标容器内的第一服务器的双向通信连接,向所述第一服务器发送所述通信请求;
通信模块,用于接收消息返回体,并根据所述消息返回体,与所述第一服务器进行通信,所述消息返回体用于实现所述第一服务器与所述第二服务器的通信。
在一种可能的实施方式中,所述获取模块具体用于:
获取Http请求,所述Http请求中包括所述Http请求的URL地址和请求参数;
根据所述URL地址和所述请求参数,确定所述通信请求。
在一种可能的实施方式中,所述发送模块具体用于:
根据所述URL地址和所述请求参数,确定所述第二服务器与所述第一服务器的双向通信连接;
通过所述双向通信连接,向所述第一服务器发送所述通信请求。
在一种可能的实施方式中,所述通信模块具体用于:
接收所述第一服务器发送的消息返回体;
根据所述消息返回体,确定目标调用方线程;
恢复所述目标调用方线程的运行;
对所述消息返回体进行解析处理,得到Http返回消息体,并向上层调用方发送所述Http返回消息体,所述Http返回消息体用于指示通信建立连接完成。
在一种可能的实施方式中,所述装置还包括连接模块;
所述连接模块具体用于:
启动双向通信协议监听服务;
当监听到所述目标容器内的第一服务器的连接请求,与所述第一服务器建立所述双向通信连接。
第五方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面所述的基于WebSocket实现跨容器通信的方法。
第六方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第二方面所述的基于WebSocket实现跨容器通信的方法。
第七方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面或者第二方面所述的基于WebSocket实现跨容器通信的方法。
第八方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面或者第二方面所述的基于WebSocket实现跨容器通信的方法。
本申请提供的一种基于WebSocket实现跨容器通信的方法和装置,目标容器内的第一服务器可以接收到目标容器外的第二服务器通过第一服务器与第二服务器的双向通信连接发送的通信请求,然后获取该通信请求对应的请求结果,并根据该请求结果通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体,使得第二服务器根据消息返回体,与第一服务器进行通信。例如,双向通信连接可以是WebSocket连接,无需进行网络映射,使得容器内外的应用程序进行Http服务交互更加灵活,而且容器内应用程序主动发起WebSocket连接,对容器没有侵入性,保证了容器的网络安全。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请适用的一种应用场景的示意图;
图2为本申请第一服务器和第二服务器通过WebSocket连接进行交互的流程示意图;
图3为本申请实施例一提供的一种基于WebSocket实现跨容器通信的方法的流程示意图;
图4为本申请实施例二提供的另一种基于WebSocket实现跨容器通信的方法的流程示意图;
图5为本申请实施例三提供的又一种基于WebSocket实现跨容器通信的方法的流程示意图;
图6为本申请实施例四提供的又一种基于WebSocket实现跨容器通信的方法的流程示意图;
图7为本申请实施例五提供的一种基于WebSocket实现跨容器通信的方法的信令流程图;
图8为本申请实施例六提供的一种基于WebSocket实现跨容器通信的装置的结构示意图;
图9为本申请实施例七提供的一种基于WebSocket实现跨容器通信的装置的结构示意图;
图10为本申请实施例八提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在相关技术中,当容器内的应用程序向容器外的应用程序提供Http服务时,需要使用容器提供的网络映射访问方式,在启动容器时指定映射的端口,使得容器外的应用程序可以根据该端口访问容器内的应用程序,即容器内的应用程序可以通过该端口为容器外的应用程序提供Http服务。
但是,当容器内的应用程序的端口是动态生成的,由于端口难以预知,这种情况下无法提前绑定端口,无法实现Http服务交互。
而且在开发一个公共组件时,该组件需要动态在容器应用中监听一个端口时,在相关技术中需要在容器应用启动时就指定端口映射,对容器内的业务应用有一定的侵入性。当容器内应用与外部的调用方处于不同的网络区域时,如果监听端口是未知的,则难以提前开通网络策略。
并且,当容器内的应用程序与容器外的应用程序处于不同的网络区域时,如果监听端口是未知的,则难以提前开通网络策略,不利于网络区域的管理。
所以,本申请提供一种基于WebSocket实现跨容器通信的方法,通过目标容器内的第一服务器主动与容器外的第二服务器建立双向通信连接(例如WebSocket连接),使得第一服务器和第二服务器可以通过该连接进行Http服务交互,实现通信,无需进行网络映射,使得容器内外的服务器中的应用程序进行Http服务交互更加灵活,而且容器内的第一服务器主动发起WebSocket连接,对容器没有侵入性,保证了容器的网络安全。
其中,容器外的第二服务器也可以称为容器外调用方,具体是指任意一个需要与容器内的第一服务器中的应用程序的Http服务进行交互的应用程序或者客户端等。
为了便于理解,下面结合图1的示例,对本申请适用的应用场景进行说明。
图1为本申请适用的一种应用场景的示意图,请参见图1,包括目标容器内的第一服务器101和目标容器外的第二服务器102,第一服务器101通过与第二服务器建立双向通信连接,然后第一服务器与第二服务器通过该双向通信连接,实现Http服务交互。其中,双向通信连接例如可以是WebSocket连接,下面图2的流程中以WebSocket连接为例进行说明。
对于第一服务器和第二服务器通过WebSocket连接进行交互的流程,下面,通过图2进行说明。
S201、第二服务器通过启动模块启动WebSocket(双向通信协议)监听服务。
S202、第一服务器通过客户端模块(WebSocket Client),与第二服务器建立WebSocket连接。
S203、第一服务器通过启动模块开启本地的Http服务。
S204、第二服务器获取上层调用方发起的Http请求。
S205、第二服务器通过管理模块,根据Http请求确定通信请求(即WebSocket请求),并向服务模块发送通信请求。
S206、第二服务器通过服务模块向第一服务器发送WebSocket请求。
S207、第一服务器通过客户端模块,解析WebSocket请求,并调用Http服务模块。
S208、第一服务器通过客户端模块接收Http服务模块发送的Http服务的调用结果。
S209、第一服务器通过客户端模块对Http服务的调用结果进行解析处理,构建WebSocket的消息返回体,并向第二服务器发送消息返回体。
S210、第二服务器通过服务模块,根据消息返回体确定目标调用方线程,并恢复目标调用方线程的运行,并发送消息返回体。
S211、第二服务器通过管理模块,对消息返回体进行解析处理,得到Http返回消息体,并向上层调用方发送Http返回消息体,Http返回消息体用于指示通信建立连接完成。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立存在,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图3为本申请实施例一提供的一种基于WebSocket实现跨容器通信的方法的流程示意图,该方法可以由目标容器内的第一服务器执行,也可以由设置在第一服务器中的通信装置执行,该装置可以是芯片、也可以是芯片模组、还可以是集成开发环境(integrateddevelopment environment,IDE)等,下面以第一服务器为例进行说明,参考图3,该方法包括如下步骤。
S301、接收目标容器外的第二服务器发送的通信请求。
第一服务器在接收第二服务器发送的通信请求之前,可以与第二服务器建立双向通信连接,例如WebSocket连接。
示例性的,第一服务器可以向第二服务器发送连接请求,使得第二服务器在启动双向通信协议监听服务后,在监听到该连接请求时,与第一服务器建立双向通信连接。
第一服务器与第二服务器建立双向通信连接后,第一服务器可以接收到目标容器外的第二服务器发送的通信请求,该通信请求可以是WebSocket请求,以请求调用第一服务器内的应用程序提供的Http服务。
示例性的,上述通信请求包括统一资源定位系统(Uniform Resource Locator,URL)地址和请求参数,请求参数可以包括目标容器的标识、第一服务器中的目标应用程序的标识、以及所请求的Http服务相关的参数。
其中,目标应用程序的标识可以是目标应用程序的程序名称或者网际互联协议(Internet Protocol,IP)地址等。所请求的Http服务相关的参数可以包括Http的头部信息,例如公共头部信息(General)和/或请求头信息(Request Headers)等。
S302、获取通信请求对应的请求结果。
第一服务器接收到通信请求后,可以根据通信请求,获取该通信请求对应的请求结果。
示例性的,第一服务器获取通信请求对应的请求结果的方式例如可以是:第一服务器根据通信请求,调用Http服务,以确定该通信请求对应的请求结果,该请求结果用于指示第二服务器可以与第一服务器实现Http服务交互。
S303、根据请求结果,通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体。
获取到通信请求的请求结果后,第一服务器可以通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体,消息返回体用于实现第一服务器与第二服务器的通信,即实现第一服务器与第二服务器的Http服务交互。
在本实施例中,目标容器内的第一服务器可以接收到目标容器外的第二服务器通过第一服务器与第二服务器的双向通信连接发送的通信请求,然后获取该通信请求对应的请求结果,并根据该请求结果通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体,使得第二服务器根据消息返回体,与第一服务器进行通信。例如,双向通信连接可以是WebSocket连接,无需进行网络映射,使得容器内外的应用程序进行Http服务交互更加灵活,而且容器内应用程序主动发起WebSocket连接,对容器没有侵入性,保证了容器的网络安全。
下面,通过实施例二对本申请提供的另一种基于WebSocket实现跨容器通信的方法进行说明。
图4为本申请实施例二提供的另一种基于WebSocket实现跨容器通信的方法的流程示意图,该方法可以由目标容器内的第一服务器执行,也可以由设置在第一服务器中的通信装置执行,该装置可以是芯片、也可以是芯片模组、还可以是集成开发环境(integrated development environment,IDE)等,下面以第一服务器为例进行说明,参考图4,该方法包括如下步骤。
S401、接收目标容器外的第二服务器发送的通信请求。
第一服务器在接收第二服务器发送的通信请求之前,可以与第二服务器建立双向通信连接,然后开启本地的Http服务,使得后续在接收到第二服务器发送的通信请求后,为第二服务器提供Http服务。
S402、对通信请求进行解析处理,得到通信请求的URL地址和请求参数。
第一服务器可以对通信请求进行解析处理,得到通信请求中包括的URL地址和请求参数,对于请求参数的描述可以参考实施例一中的S302,这里不再赘述。
S403、基于URL地址和请求参数,调用Http服务得到Http服务的调用结果。
第一服务器可以根据通信请求调用Http服务,具体的,第一服务器可以基于URL地址和请求参数,调用Http服务得到Http服务的调用结果,该调用结果用于指示第二服务器可以与第一服务器实现Http服务交互。
S404、根据Http服务的调用结果,确定请求结果。
确定调用Http服务的调用结果后,第一服务器可以将调用结果确定为通信请求的请求结果。
S405、根据请求结果,通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体。
确定请求结果后,第一服务器可以通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体。
在一种可能的实现方式中,第一服务器可以对该请求结果进行解析处理,构建消息返回体,然后根据该通信请求,确定第一服务器与第二服务器的双向通信连接。具体的,第一服务器可以根据URL地址和请求参数确定第一服务器内的目标应用程序,然后在第一服务器与多个服务器的多个应用程序的双向通信连接中确定第一服务器与第二服务器的双向通信连接。然后通过该双向通信连接,向第二服务器发送该消息返回体,消息返回体用于实现第一服务器与第二服务器的通信,即实现第一服务器与第二服务器的Http服务交互。
在本实施例中,目标容器内的第一服务器可以接收到目标容器外的第二服务器通过第一服务器与第二服务器的双向通信连接发送的通信请求,然后对通信请求进行解析处理,得到通信请求的URL地址和请求参数,并基于URL地址和请求参数,调用Http服务得到Http服务的调用结果,根据Http服务的调用结果,确定请求结果,然后将该请求结果通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体,使得第二服务器根据消息返回体,与第一服务器进行通信。例如,双向通信连接可以是WebSocket连接,无需进行网络映射,使得容器内外的应用程序进行Http服务交互更加灵活,而且容器内应用程序主动发起WebSocket连接,对容器没有侵入性,保证了容器的网络安全。
下面,通过实施例三对本申请提供的又一种基于WebSocket实现跨容器通信的方法进行说明。
图5为本申请实施例三提供的又一种基于WebSocket实现跨容器通信的方法的流程示意图,该方法可以由目标容器外的第二服务器执行,也可以由设置在第二服务器中的通信装置执行,该装置可以是芯片、也可以是芯片模组、还可以是集成开发环境(integrated development environment,IDE)等,下面以第二服务器为例进行说明,参考图5,该方法包括如下步骤。
S501、获取通信请求,通信请求包括Http请求的地址和请求参数。
第二服务器可以获取由上层调用方发起的通信请求,该通信请求中包括的Http请求的URL地址和请求参数,可以用于第一服务器调用Http服务。
对于请求参数的具体描述可以参考实施例一中的S301,这里不再赘述。
S502、通过第二服务器与目标容器内的第一服务器的双向通信连接,向第一服务器发送通信请求。
第二服务器在发送通信请求之前,可以启动双向通信协议监听服务,例如WebSocket监听服务,在监听到目标容器内的第一服务器的连接请求时,与第一服务器建立双向通信连接,例如WebSocket连接。
然后在获取到通信请求后,可以通过该双向通信连接,向第一服务器发送通信请求,使得第一服务器可以根据该通信请求调用Http服务请求。
S503、接收消息返回体,并根据消息返回体,与第一服务器进行通信。
第二服务器向第一服务器发送通信请求后,可以接收到第一服务器发送的消息返回体,该消息返回体用于实现第一服务器与第二服务器的通信。
然后根据消息返回体,与第一服务器进行通信,即与第一服务器实现Http服务交互。示例性的,第二服务器可以根据消息返回体恢复目标调用方线程,以实现与第一服务器的Http服务交互。
在本实施例中,目标容器外的第二服务器获取通信请求,然后通过第二服务器与目标容器内的第一服务器的双向通信连接,向第一服务器发送通信请求,接收消息返回体,并根据消息返回体,与第一服务器进行通信。例如,双向通信连接可以是WebSocket连接,无需进行网络映射,使得容器内外的应用程序进行Http服务交互更加灵活,而且容器内应用程序主动发起WebSocket连接,对容器没有侵入性,保证了容器的网络安全。
下面,通过实施例四提供的又一种基于WebSocket实现跨容器通信的方法进行说明。
图6为本申请实施例四提供的又一种基于WebSocket实现跨容器通信的方法的流程示意图,该方法可以由目标容器外的第二服务器执行,也可以由设置在第二服务器中的通信装置执行,该装置可以是芯片、也可以是芯片模组、还可以是集成开发环境(integrated development environment,IDE)等,下面以第二服务器为例进行说明,参考图6,该方法包括如下步骤。
S601、获取通信请求,通信请求包括Http请求的URL地址和请求参数。
在一种可能是实现方式中,第二服务器可以获取上层调用方发送的Http请求,该请求中包括Http请求的URL地址和请求参数,然后根据该URL地址和请求参数,确定通信请求,该通信请求可以用于请求目标容器内的第一服务器的Http服务。
S602、通过第二服务器与目标容器内的第一服务器的双向通信连接,向第一服务器发送通信请求。
在一种可能是实现方式中,第二服务器可以根据URL地址和请求参数,确定第二服务器与第一服务器的双向通信连接,具体的,第二服务器可以根据URL地址和请求参数确定第一服务器内的目标应用程序,然后再第二服务器与多个服务器的多个应用程序的双向通信连接中确定第一服务器与第二服务器的双向通信连接。
在确定双向通信连接后,第二服务器可以通过该双向通信连接,向第一服务器发送该通信请求,使得第一服务器可以根据该通信请求调用Http服务,与第二服务器实现Http服务交互。
S603、接收第一服务器发送的消息返回体。
向第一服务器发送通信请求后,第一服务器根据该通信请求调用Http服务后,确定消息返回体,第二服务器可以接收到第一服务器通过第一服务器与第二服务器的双向通信连接发送的消息返回体,消息返回体用于实现第一服务器与第二服务器的通信。
S604、根据消息返回体,确定目标调用方线程。
接收到消息返回体后,第二服务器可以根据该消息返回体,在多个调用方线程中确定目标调用方线程,目标调用方线程为上层调用方发起的Http请求对应的线程。
S605、恢复目标调用方线程的运行。
确定目标调用方线程后,可以恢复目标调用方线程的运行,也就是说,在上层调用方发起Http请求后,其对应的目标调用方线程处于待运行状态,在接收到第一服务器发送的消息返回体后,即可恢复该目标调用方线程的运行。
S606、对消息返回体进行解析处理,得到Http返回消息体,并向上层调用方发送Http返回消息体。
Http返回消息体用于指示通信建立连接完成。
恢复目标调用方线程的运行后,第二服务器可以对消息返回体进行解析,得到Http请求对应的Http消息返回体,并向上层调用方发送该Http消息返回体,用于指示第一服务器与第二服务器的通信建立连接完成,即可以进行Http服务交互。
在本实施例中,目标容器外的第二服务器获取通信请求,然后通过第二服务器与目标容器内的第一服务器的双向通信连接,向第一服务器发送通信请求,接收消息返回体,根据消息返回体,确定目标调用方线程,然后恢复目标调用方线程的运行,并对消息返回体进行解析处理,得到Http返回消息体,并向上层调用方发送Http返回消息体,Http返回消息体用于指示通信建立连接完成。例如,双向通信连接可以是WebSocket连接,无需进行网络映射,使得容器内外的应用程序进行Http服务交互更加灵活,而且容器内应用程序主动发起WebSocket连接,对容器没有侵入性,保证了容器的网络安全。
在本申请实施例中,当目标容器内的第一服务器与目标容器外的第二服务器处于不同的网络区域时,只需要开通目标容器内的第一服务器到第二服务器的WebSocket监听端口的网络策略即可,易于管理。
下面,通过实施例五对第一服务器和第二服务器的交互进行说明。
图7为本申请实施例五提供的一种基于WebSocket实现跨容器通信的方法的信令流程图,参考图7,该方法包括如下步骤。
S701、第二服务器获取通信请求。
该通信请求包括Http请求的URL地址和请求参数等。
S702、第二服务器通过第二服务器与第一服务器的双向通信连接,向第一服务器发送通信请求。
S703、第一服务器根据通信请求,获取该通信请求对应的请求结果。
S704、第一服务器根据请求结果,通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体。
消息返回体用于实现第一服务器与第二服务器的通信。
S705、第二服务器根据消息返回体,与第一服务器进行通信。
对于上述步骤的具体实现方式,请参考上述实施例,这里不再赘述。
在本实施例中,目标容器内的第一服务器可以接收到目标容器外的第二服务器通过第一服务器与第二服务器的双向通信连接发送的通信请求,然后获取该通信请求对应的请求结果,并根据该请求结果通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体,使得第二服务器根据消息返回体,与第一服务器进行通信。例如,双向通信连接可以是WebSocket连接,无需进行网络映射,使得容器内外的应用程序进行Http服务交互更加灵活,而且容器内应用程序主动发起WebSocket连接,对容器没有侵入性,保证了容器的网络安全。
图8为本申请实施例六提供的一种基于WebSocket实现跨容器通信的装置的结构示意图。参考图8,该装置80包括:接收模块801,获取模块802和发送模块803。
接收模块801,用于接收目标容器外的第二服务器发送的通信请求。
获取模块802,用于获取通信请求对应的请求结果。
发送模块803,用于根据请求结果,通过第一服务器与第二服务器的双向通信连接,向第二服务器发送消息返回体,消息返回体用于实现第一服务器与第二服务器的通信。
在一种可能的实施方式中,获取模块801具体用于:
对通信请求进行解析处理,得到通信请求的统一资源定位符URL地址和请求参数。
基于URL地址和请求参数,调用Http服务得到Http服务的调用结果。
根据Http服务的调用结果,确定请求结果。
在一种可能的实施方式中,发送模块803具体用于:
对请求结果进行解析处理,构建消息返回体。
根据通信请求,确定双向通信连接。
通过双向通信连接,向第二服务器发送消息返回体。
在一种可能的实施方式中,装置80还包括:建立模块。
建立模块具体用于:
与第二服务器建立双向通信连接。
开启本地的Http服务。
本实施例的装置,可用于执行上述方法实施例的技术方案,具体实现方式和技术效果类似,这里不再赘述。
图9为本申请实施例七提供的一种基于WebSocket实现跨容器通信的装置的结构示意图。参考图9,该装置90包括:获取模块901,发送模块902和通信模块903。
获取模块901,用于获取通信请求,通信请求包括Http请求的地址和请求参数。
发送模块902,用于通过第二服务器与目标容器内的第一服务器的双向通信连接,向第一服务器发送通信请求。
通信模块903,用于接收消息返回体,并根据消息返回体,与第一服务器进行通信,消息返回体用于实现第一服务器与第二服务器的通信。
在一种可能的实施方式中,获取模块901具体用于:
获取Http请求,Http请求中包括Http请求的URL地址和请求参数。
根据URL地址和请求参数,确定通信请求。
在一种可能的实施方式中,发送模块902具体用于:
根据URL地址和请求参数,确定第二服务器与第一服务器的双向通信连接。
通过双向通信连接,向第一服务器发送通信请求。
在一种可能的实施方式中,通信模块903具体用于:
接收第一服务器发送的消息返回体。
根据消息返回体,确定目标调用方线程。
恢复目标调用方线程的运行。
对消息返回体进行解析处理,得到Http返回消息体,并向上层调用方发送Http返回消息体,Http返回消息体用于指示通信建立连接完成。
在一种可能的实施方式中,装置90还包括:连接模块。
连接模块具体用于:
启动双向通信协议监听服务.
当监听到目标容器内的第一服务器的连接请求,与第一服务器建立双向通信连接。
本实施例的装置,可用于执行上述方法实施例的技术方案,具体实现方式和技术效果类似,这里不再赘述。
图10为本申请实施例八提供的一种电子设备的结构示意图,如图10所示,电子设备100可以包括:至少一个处理器1001和存储器1002。
存储器1002,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机执行指令。
存储器1002可能包含随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储器(Non-volatile Memory),例如至少一个磁盘存储器。
处理器1001用于执行存储器1002存储的计算机执行指令,以实现前述方法实施例所描述的方法。其中,处理器1001可能是一个中央处理器(Central Processing Unit,CPU),或者是特定集成电路(Application Specific Integrated Circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选的,电子设备100还可以包括:通信接口1003。在具体实现上,如果通信接口1003、存储器1002和处理器1001独立实现,则通信接口1003、存储器1002和处理器1001可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(IndustryStandard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口1003、存储器1002和处理器1001集成在一块芯片上实现,则通信接口1003、存储器1002和处理器1001可以通过内部接口完成通信。
电子设备100可以为芯片、芯片模组、集成开发环境(Integrated DevelopmentEnvironment,IDE)、服务器等。
本实施例的电子设备,可用于执行上述方法实施例的技术方案,具体实现方式和技术效果类似,这里不再赘述。
本申请实施例九提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、RAM、磁盘或者光盘等各种可以存储计算机执行指令的介质,具体的,该计算机可读存储介质中存储有计算机执行指令,该计算机执行指令被计算机执行时使得上述方法实施例所示的技术方案被执行,具体实现方式和技术效果类似,这里不再赘述。
本申请实施例十提供一种计算机程序产品,包括计算机程序,计算机程序被计算机执行时,使得上述方法实施例所示的技术方案被执行,具体实现方式和技术效果类似,这里不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (15)
1.一种基于WebSocket实现跨容器通信的方法,其特征在于,应用于目标容器内的第一服务器,所述方法包括:
接收所述目标容器外的第二服务器发送的通信请求;
获取所述通信请求对应的请求结果;
根据所述请求结果,通过所述第一服务器与所述第二服务器的双向通信连接,向所述第二服务器发送消息返回体,所述消息返回体用于实现所述第一服务器与所述第二服务器的通信。
2.根据权利要求1所述的方法,其特征在于,所述获取所述通信请求对应的请求结果,包括:
对所述通信请求进行解析处理,得到所述通信请求的统一资源定位符URL地址和请求参数;
基于所述URL地址和所述请求参数,调用Http服务得到所述Http服务的调用结果;
根据所述Http服务的调用结果,确定所述请求结果。
3.根据权利要求2所述的方法,其特征在于,所述通过所述第一服务器与所述第二服务器的双向通信连接,向所述第二服务器发送消息返回体,包括:
对所述请求结果进行解析处理,构建所述消息返回体;
根据所述通信请求,确定所述双向通信连接;
通过所述双向通信连接,向所述第二服务器发送所述消息返回体。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
与所述第二服务器建立所述双向通信连接;
开启本地的Http服务。
5.一种基于WebSocket实现跨容器通信的方法,其特征在于,应用于目标容器外的第二服务器,所述方法包括:
获取通信请求,所述通信请求包括Http请求的URL地址和请求参数;
通过所述第二服务器与所述目标容器内的第一服务器的双向通信连接,向所述第一服务器发送所述通信请求;
接收消息返回体,并根据所述消息返回体,与所述第一服务器进行通信,所述消息返回体用于实现所述第一服务器与所述第二服务器的通信。
6.根据权利要求5所述的方法,其特征在于,所述获取通信请求,包括:
获取Http请求,所述Http请求中包括所述Http请求的URL地址和请求参数;
根据所述URL地址和所述请求参数,确定所述通信请求。
7.根据权利要求6所述的方法,其特征在于,所述通过所述第二服务器与所述目标容器内的第一服务器的双向通信连接,向所述第一服务器发送所述通信请求,包括:
根据所述URL地址和所述请求参数,确定所述第二服务器与所述第一服务器的双向通信连接;
通过所述双向通信连接,向所述第一服务器发送所述通信请求。
8.根据权利要求5-7任一项所述的方法,其特征在于,所述接收消息返回体,并根据所述消息返回体,与所述第一服务器进行通信,包括:
接收所述第一服务器发送的消息返回体;
根据所述消息返回体,确定目标调用方线程;
恢复所述目标调用方线程的运行;
对所述消息返回体进行解析处理,得到Http返回消息体,并向上层调用方发送所述Http返回消息体,所述Http返回消息体用于指示通信建立连接完成。
9.根据权利要求5-7任一项所述的方法,其特征在于,所述方法还包括:
启动双向通信协议监听服务;
当监听到所述目标容器内的第一服务器的连接请求,与所述第一服务器建立所述双向通信连接。
10.一种基于WebSocket实现跨容器通信的装置,其特征在于,包括:
接收模块,用于接收目标容器外的第二服务器发送的通信请求;
获取模块,用于获取所述通信请求对应的请求结果;
发送模块,用于根据所述请求结果,通过第一服务器与所述第二服务器的双向通信连接,向所述第二服务器发送消息返回体,所述消息返回体用于实现所述第一服务器与所述第二服务器的通信。
11.一种基于WebSocket实现跨容器通信的装置,其特征在于,包括:
获取模块,用于获取通信请求,所述通信请求包括Http请求的地址和请求参数;
发送模块,用于通过第二服务器与目标容器内的第一服务器的双向通信连接,向所述第一服务器发送所述通信请求;
通信模块,用于接收消息返回体,并根据所述消息返回体,与所述第一服务器进行通信。
12.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-4中任一项所述的基于WebSocket实现跨容器通信的方法。
13.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求5-9中任一项所述的基于WebSocket实现跨容器通信的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-9任一项所述的基于WebSocket实现跨容器通信的方法。
15.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-9中任一项所述的基于WebSocket实现跨容器通信的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310088861.9A CN116192482A (zh) | 2023-02-08 | 2023-02-08 | 基于WebSocket实现跨容器通信的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310088861.9A CN116192482A (zh) | 2023-02-08 | 2023-02-08 | 基于WebSocket实现跨容器通信的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116192482A true CN116192482A (zh) | 2023-05-30 |
Family
ID=86447234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310088861.9A Pending CN116192482A (zh) | 2023-02-08 | 2023-02-08 | 基于WebSocket实现跨容器通信的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116192482A (zh) |
-
2023
- 2023-02-08 CN CN202310088861.9A patent/CN116192482A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112104754B (zh) | 网络代理方法、系统、装置、设备及存储介质 | |
CN111314452B (zh) | 云手机的Shell访问方法、装置、设备及存储介质 | |
EP3197122B1 (en) | Method of forwarding in-application traffic on smart mobile terminal | |
CN113259479B (zh) | 一种数据处理方法以及设备 | |
CN104796406A (zh) | 一种应用识别方法及装置 | |
CN114124929A (zh) | 跨网络的数据处理方法和装置 | |
CN112261094A (zh) | 一种报文处理方法及代理服务器 | |
CN112702336A (zh) | 政务服务的安全控制方法、装置、安全网关及存储介质 | |
CN113438256B (zh) | 一种基于双层ssl的数据传输方法、系统和代理服务器 | |
CN112351115A (zh) | 对称型nat设备的端口预测方法及装置 | |
CN108512889B (zh) | 一种基于http的应用响应推送方法及代理服务器 | |
CN115913597A (zh) | 确定失陷主机的方法及装置 | |
CN113873057A (zh) | 数据处理方法和装置 | |
CN116192482A (zh) | 基于WebSocket实现跨容器通信的方法和装置 | |
EP2845374B1 (en) | Address system | |
CN112653609B (zh) | 一种vpn识别应用方法、装置、终端及存储介质 | |
JP6412641B2 (ja) | 通信リンクの送信方法、装置及び端末 | |
CN111049795B (zh) | 分布式Web应用的敏感数据未加密漏洞的检测方法及装置 | |
US10491654B2 (en) | Communicating with a remote service through a hypertext transfer protocol (HTTP) session | |
CN109660573B (zh) | 数据传输方法和装置 | |
CN114125017B (zh) | 媒体信息的显示方法和装置、存储介质及电子设备 | |
CN114448703B (zh) | 请求处理方法、装置、电子设备及存储介质 | |
CN114827197B (zh) | 基于物联网的服务通信方法、装置、设备及介质 | |
CN114710494B (zh) | 应用管理方法、装置和存储介质 | |
CN112261051B (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 |