【发布时间】:2017-01-02 23:12:27
【问题描述】:
我已经为某些服务器(用 C++ 编写)构建了一个 REST API 功能,并且针对一些技术限制,我为此使用了 NodeJs 和 C++ boost::asio 库。工作原理如下图所示
基本上NodeJs 正在等待 HTTP 请求。当NodeJs 收到一个请求时,它会创建一个简单的字符串,通过net.connect() 打开一个新的套接字连接并发送到主C++ 服务器。 C++ 服务器获取该字符串,执行一些工作并通过套接字发回响应字符串。最后,NodeJs 在得到 C++ 服务器的响应后,从那里做出 HTTP 响应并发送回客户端,然后调用 net.destroy() 来关闭套接字。
所以NodeJs 模块是外部世界客户端的服务器,但它也是 C++ 服务器的客户端,即NodeJs 模块是某种代理服务器。
目前我使用boost::asio 的同步模型,一切正常,但是服务器同时只处理一个请求!但现在我想切换到异步模型以同时支持多个请求。因此,我有一个问题,如果我切换到boost::asio 的异步模型(使用async_accept、async_read、async_write...)这是否允许 C++ 服务器同时处理多个请求,如果它有一个实际的客户,即NodeJs?
我对@987654339@ 和Javascript 很陌生。感谢您的宝贵时间!
【问题讨论】:
标签: node.js sockets asynchronous boost server