是否有在C++和Javascript中实现的高级进程间通信API

Is there a high-level inter-process communications API that is implemented in both C++ and Javascript

本文关键字:实现 高级 进程间通信 API Javascript C++ 是否      更新时间:2023-10-16

我正在开发需要在C++应用程序和Javascript Web应用程序之间传递消息的应用程序。

当然,我

可以用任何一种语言自己编写套接字代码,我过去在必要时也这样做过。

真正想要的是一个更高级别的消息发布或消息队列 API,它为我做了很多工作。 有谁知道这样的 API?

我看过ICE,它似乎没有Javascript绑定。 我也看过 Boost 消息队列,但它只迎合了事情的C++方面。 如果有必要,我可能会为这两种技术中的任何一种滚动我自己的Javascript绑定。

更新:抱歉之前应该提到这一点,我想在浏览器中运行它。

为了给出一个更完整的故事,我想要的是一个简单的基于浏览器的应用程序,用于配置和显示C++应用程序的日志记录。

我知道还有其他方法可以做到这一点,但我对基于C++和基于浏览器的 Javascript 中的高级库特别感兴趣,该库在套接字 API 之上构建消息队列(如果没有,那么我可能会考虑自己实现它并编写代码项目文章(。

另外:我不担心网络浏览器的可移植性。 例如,如果有一个高级IPC Javascript库只能在Chrome中工作,我会很高兴的。

对于JavaScript,我假设你在浏览器中运行它?在这种情况下,您的C++应用程序需要提供 Web 服务器和某种可以调用的基于 JSON 的 Web 服务。在JavaScript方面,你只需使用AJAX与该Web服务进行通信。

另一种选择是websockets,不过在C++端可能更难实现。

简单地回答你的问题:不,没有开箱即用的 ECMAscript 实现的 IPC。

但你实际上已经回答了你的问题。如果你尝试与在浏览器中运行的Javascript进行通信,你确实应该使用(web-(sockets连接来管道日期。当然,你可以用C++编写一个简单的HTTP服务器,但我想这是矫枉过正的,没有双向套接字的功能。

从头开始

C++实现 web-socket 连接仍然需要一些工作(规范在很长一段时间内都在不断变化(,但我想已经有一些库了。

如果您尝试与node.js进行通信,那么使用真正的套接字/管道几乎是一项微不足道的任务。

我找到了满足我需求的解决方案。它并不完全完美,但我认为它工作得很好。

有些人建议使用HTTP和ajax。 事实证明这是一个有用的想法,经过一些原型设计,我认为它解决了我相当基本的需求。

更具体地说,我正在使用嵌入在我的C++应用程序中的Mongoose HTTP服务器,并且我正在使用jQuery ajax函数从服务器中提取数据。 jQuery客户端不断轮询服务器以获取新数据,不是特别有效,但我认为它对我来说已经足够好了。

一旦我的实现完成,我将写一篇文章详细解释如何做到这一点,然后我将更新这个答案。

你可以试试DBus,它有非常简单的机制来定义、查询和使用接口,并且有一些基于XPCOM和webkit的浏览器的组件(例如 http://sandbox.movial.com/wiki/index.php/Browser_DBus_Bridge 和 http://code.google.com/p/v8-dbus/(。此外,DBus是开源和跨平台的。

对于服务器端或非浏览器实现,命名管道怎么样?

是的,

它是老式技术,使用情况取决于您使用的操作系统,但只要您的服务器端js环境能够读写文件,它就可以工作,并且它符合"高级"进程间通信的描述。