NodeJs和boost :: asio组合

时间:2016-08-26 09:59:54

标签: node.js sockets asynchronous boost server

我为某些服务器(用C ++编写)构建了一个REST API功能,但由于某些技术限制,我使用了NodeJsC++ boost::asio库。工作原理如下图所示

enter image description here

基本上NodeJs正在等待HTTP请求。当NodeJs获取请求时,它会生成一个简单的字符串,通过net.connect()打开一个新的套接字连接并发送到主C ++服务器。 C ++服务器获取该字符串,执行某些工作并通过套接字发回响应字符串。最后,在获得C ++服务器的响应后,NodeJs从中发出HTTP响应并发送回客户端,然后调用net.destroy()来关闭套接字。

所以NodeJs模块是外部世界客户端的服务器,但它也是C ++服务器的客户端,即NodeJs模块是某种代理服务器。

目前我使用boost::asio的同步模型,一切正常,但服务器只同时处理一个请求!但是现在我想切换到异步模型,以便同时支持多个请求。因此,我有一个问题,如果我切换到boost::asio的异步模型(async_acceptasync_readasync_write ...)这将允许C ++服务器处理多个请求同时,如果它有实际的一个客户端,即NodeJs

我对NodeJsJavascript都很陌生。谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

我决定弄脏手,试着切换到boost::asio的异步模型。

现在一切正常,C ++服务器同时处理多个请求。