我正在使用nghttp2
来实现RESTful API服务器。我已经定义了两个GET API:
/api/ping
和/api/wait
。虽然立即发送对前者的响应,但服务器在响应后者之前会进行一些处理。我给服务器分配了4个线程。
从客户端(也使用nghttp2
实现),我建立了与服务器的连接并逐个进行API调用,/api/wait
首先跟随/api/ping
。我观察到使用Wireshark,两个GET请求是通过两个不同的TCP数据包发送的。但是,在服务器完成/api/wait
的处理之前,它不会处理/api/ping
,尽管它有其他可用线程。
我从客户端建立了两个TCP连接,并在不同的连接上进行了两次API调用,服务器并行处理它们。
这是否意味着nghttp2
在一个线程上处理一个TCP连接完全,并且一个TCP连接的请求按顺序按设计处理? nghttp2
中有任何设置可以绕过这个吗?这可能是Web应用程序(顺序处理请求)的一个很好的功能,但不是API彼此独立的API服务器。