Node.js有一个非常好的和深思熟虑的Net API。 我想知道该API有一个很好的C ++ 实现,例如LuaNode为Lua做了什么?
答案 0 :(得分:5)
看一下node.native - 尝试实现类似于node.js核心库的api,但是使用c ++ 11(并且基于libuv的基础IO也是如此)
答案 1 :(得分:4)
我所知道的并不相似。
然而,有几个反应器框架,它们提供相同的事件队列驱动环境。例如,boost::asio提供了一个事件队列,它使回调处理您推送到事件队列的网络事件,计时器和arbiatary事件。
它基本上是相同的想法,以相同的方式使用。除了node.js之外,它还没有像开始那样简单,除了我上面提到的基础知识之外,还提供了任何非阻塞功能。
它确实为您提供了构建自己系统的环境。这是一个很棒的图书馆,但可能比你想要的还要低。还有其他类似的库,例如ACE和部分POCO c ++库,但同样,它们的级别低于node.js,而且库支持更少。
编辑: 我没有看太多但是这个https://github.com/joyent/libuv怎么样。这是一个用于以跨平台方式实现某些node.js功能的库。也许可以根据需要使用其中的一部分?
答案 2 :(得分:2)
Boost.Asio在概念上与Node.js非常相似。 Asio的主要区别是作为库实现,Node.js是一种语言构造。因此,Asio公开事件队列,需要一些初始设置来发布回调处理程序,并最终进行阻塞调用以启动事件循环(io_service.run()
)。
如果您正在寻找类似于Node.js的纯C ++ API,那么Boost.Asio绝对是您的选择。它是许多C ++应用程序的事实上的网络库。它还在boost-asio标签中对SO进行了大量讨论。
答案 3 :(得分:0)
我很确定你可以在你的程序中嵌入一个Javascript引擎
实际上将它与你的C代码绑在一起需要修改两者的eval函数,但我想我还记得看过两个引擎的示例程序吗