7

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

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

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

我看过 ICE,它似乎没有 Javascript 绑定。我还查看了 Boost 消息队列,但它仅适用于 C++ 方面。如有必要,我可能会为这些技术中的任何一种滚动我自己的 Javascript 绑定。

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

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

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

ALSO:我不关心网络浏览器的可移植性。例如,如果有一个只能在 Chrome 中运行的高级 IPC Javascript 库,我会很高兴的。

4

5 回答 5

4

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

但你实际上已经回答了你的问题。如果您尝试与在浏览器中运行的 Javascript 进行通信,您确实应该使用 (web-)sockets 连接在任一方向上管道日期。当然,你可以用 C++ 编写一个简单的 HTTP 服务器,但我想这太过分了,而且不具备双向套接字的能力。

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

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

于 2012-05-02T01:47:44.897 回答
4

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

另一种方法是 websockets,尽管在 C++ 端实现起来可能会有点困难。

于 2012-05-02T01:48:02.367 回答
2

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

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

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

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

于 2012-05-05T02:16:06.363 回答
1

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

于 2012-05-02T03:04:52.003 回答
0

对于服务器端或非浏览器实现,命名管道如何?

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

于 2012-05-02T01:50:46.283 回答