嵌套的rest api调用使服务器上的网络行为异常 我在NGHTTP2库上开发了一个RESAPI服务器,在C++中使用H2协议,并且我使用V8引擎处理一些JavaScript函数以进行某些操作。 客户端的正常Web服务调用工作正常,服务器端有一些C++函数和嵌入的V8函数,如REST API。
请参见下面的流程嵌套的rest api调用使服务器上的网络行为异常 我在NGHTTP2库上开发了一个RESAPI服务器,在C++中使用H2协议,并且我使用V8引擎处理一些JavaScript函数以进行某些操作。 客户端的正常Web服务调用工作正常,服务器端有一些C++函数和嵌入的V8函数,如REST API。,c++,c,h2,embedded-v8,C++,C,H2,Embedded V8,请参见下面的流程 客户端----HTTP2 -->服务器{C++函数(与NGHTTP2绑定为REST API),在函数调用V8函数内,在V8内有一些C++纯函数调用} 这是好的,运作良好 但是,当客户端调用特定的REST API时,API从服务器内部调用另一个REST API(与客户端调用不一样),超时发生,第二个嵌套API调用从V8中调用,实际上V8调用C++纯函数来通过CURL调用WebService。 让我们用下面的代码原型来展示 我的Web服务URL: v8pp::module cpp(
客户端----HTTP2 -->服务器{C++函数(与NGHTTP2绑定为REST API),在函数调用V8函数内,在V8内有一些C++纯函数调用}
这是好的,运作良好但是,当客户端调用特定的REST API时,API从服务器内部调用另一个REST API(与客户端调用不一样),超时发生,第二个嵌套API调用从V8中调用,实际上V8调用C++纯函数来通过CURL调用WebService。 让我们用下面的代码原型来展示
我的Web服务URL:v8pp::module cpp(context.isolate());
cpp.set("callService", &callService);
void doSomeOperation_notWorked(request, response)
{
do normal operation
call JavaScript Code (execute by V8 Engine) ( inside this Code callService called by V8 for example calling doSomeOperation_CalledByJS)
}
- Clinet调用的WebService(1)不工作:因为它在内部调用No.2
- WebService(2)可以由客户端调用,并且工作正常
- WebService(3)可以被客户端调用,并且运行良好
<强>有C++函数名为CalService < /St>>/P>
void callService(Url, Port, Method, Data)
{
CURL Initialize and call routines
}
将函数绑定到V8(使用v8pp库):
v8pp::module cpp(context.isolate());
cpp.set("callService", &callService);
void doSomeOperation_notWorked(request, response)
{
do normal operation
call JavaScript Code (execute by V8 Engine) ( inside this Code callService called by V8 for example calling doSomeOperation_CalledByJS)
}
现在客户端调用的主要web服务:
v8pp::module cpp(context.isolate());
cpp.set("callService", &callService);
void doSomeOperation_notWorked(request, response)
{
do normal operation
call JavaScript Code (execute by V8 Engine) ( inside this Code callService called by V8 for example calling doSomeOperation_CalledByJS)
}
现在,在调用doSomeOperation\u Working后,一切正常,但调用doSomeOperation\u notWorked时,它会随机超时
网络信息:
调用doSomeOperation\u Working时,服务器开始使用H2协议侦听端口2000:
tcp 0 0 192.168.1.10:2000 0.0.0.0:* LISTEN -
tcp 0 0 192.168.1.10:2000 192.168.20.12:49731 ESTABLISHED -
调用doSomeOperation\u未工作时
tcp 0 0 192.168.1.10:2000 0.0.0.0:* LISTEN -
tcp 0 0 192.168.1.10:49152 192.168.1.10:2000 ESTABLISHED -
tcp 0 0 192.168.1.10:2000 192.168.20.12:49731 ESTABLISHED -
tcp 31 0 192.168.1.10:2000 192.168.1.10:49152 ESTABLISHED -