我为某些服务器(用C ++编写)构建了一个REST API功能,但由于某些技术限制,我使用了NodeJs
和C++
boost::asio
库。工作原理如下图所示
基本上NodeJs
正在等待HTTP请求。当NodeJs
获取请求时,它会生成一个简单的字符串,通过net.connect()
打开一个新的套接字连接并发送到主C ++服务器。 C ++服务器获取该字符串,执行某些工作并通过套接字发回响应字符串。最后,在获得C ++服务器的响应后,NodeJs
从中发出HTTP响应并发送回客户端,然后调用net.destroy()
来关闭套接字。
所以NodeJs
模块是外部世界客户端的服务器,但它也是C ++服务器的客户端,即NodeJs
模块是某种代理服务器。
目前我使用boost::asio
的同步模型,一切正常,但服务器只同时处理一个请求!但是现在我想切换到异步模型,以便同时支持多个请求。因此,我有一个问题,如果我切换到boost::asio
的异步模型(async_accept
,async_read
,async_write
...)这将允许C ++服务器处理多个请求同时,如果它有实际的一个客户端,即NodeJs
?
我对NodeJs
和Javascript
都很陌生。谢谢你的时间!
答案 0 :(得分:0)
我决定弄脏手,试着切换到boost::asio
的异步模型。
现在一切正常,C ++服务器同时处理多个请求。