Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套的rest api调用使服务器上的网络行为异常 我在NGHTTP2库上开发了一个RESAPI服务器,在C++中使用H2协议,并且我使用V8引擎处理一些JavaScript函数以进行某些操作。 客户端的正常Web服务调用工作正常,服务器端有一些C++函数和嵌入的V8函数,如REST API。_C++_C_H2_Embedded V8 - Fatal编程技术网

嵌套的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 -