![](/img/trans.png)
[英]Can RxJS Observables perform inter-process communication in an Electron app?
[英]Is there a high-level inter-process communications API that is implemented in both C++ and Javascript
我在app上工作,我需要在C ++应用程序和Javascript Web应用程序之间传递消息。
当然,我可以用任何一种语言自己编写套接字代码,并且在必要时我已经完成了这个。
我真正想要的是更高级别的消息发布或消息排队API,它为我做了很多工作。 有谁知道这样的API?
我看过ICE,它似乎没有Javascript绑定。 我也看过Boost消息队列,但它只适合C ++方面的事情。 如有必要,我可以为这些技术中的任何一种推出自己的Javascript绑定。
更新:对不起之前我应该提到这个,我想在浏览器中运行它。
为了给出一个更完整的故事我想要的是一个简单的基于浏览器的应用程序,用于配置和显示C ++应用程序的日志记录。
我知道有其他方法可以做到这一点,但我特别感兴趣的是C ++和基于浏览器的Javascript中的高级库,它在套接字API的顶部构建消息队列(如果没有,那么我可能会考虑自己实现它并编写代码项目文章)。
另外:我对Web浏览器的可移植性并不感到烦恼。 例如,如果有一个只能在Chrome中运行的高级IPC Javascript库,我会很高兴。
简单地回答你的问题:不,ECMAscript中没有开箱即用的IPC。
但你实际上已经回答了你的问题。 如果您尝试与在浏览器中运行的Javascript进行通信,您确实应该使用(web-)套接字连接来管道任一方向的日期。 当然你可以用C ++编写一个简单的HTTP服务器,但我觉得这样做太过分了,而且没有双向套接字的功能。
从头开始实现C ++中的Web套接字连接仍然是一些工作(规格已经很长时间了),但我想已经有一些图书馆了。
如果您正在尝试与node.js进行通信,那么使用真正的套接字/管道这是一项非常简单的任务。
使用JavaScript我假设您在浏览器中运行它? 在这种情况下,您的C ++应用程序需要提供一个Web服务器和一些您可以调用的基于JSON的Web服务。 在JavaScript方面,您只需使用AJAX与该Web服务进行通信。
另一种方法是websockets,虽然可能在C ++方面有点难以实现。
我找到了满足我需求的解决方案。 它并不完美,但我认为它运作良好。
有人建议使用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环境具有读取和写入文件的能力,它就可以工作,并且它符合描述“高级”进程间通信。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.