是否有Node.js Net API的C ++实现?

时间:2011-10-03 08:07:30

标签: c++ node.js

Node.js有一个非常好的和深思熟虑的Net API。 我想知道该API有一个很好的C ++ 实现,例如LuaNode为Lua做了什么?

4 个答案:

答案 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 ++应用程序的事实上的网络库。它还在标签中对SO进行了大量讨论。

答案 3 :(得分:0)

我很确定你可以在你的程序中嵌入一个Javascript引擎

实际上将它与你的C代码绑在一起需要修改两者的eval函数,但我想我还记得看过两个引擎的示例程序吗