是否有在C++和Javascript中实现的高级进程间通信API
Is there a high-level inter-process communications API that is implemented in both C++ and Javascript
我正在开发需要在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环境能够读写文件,它就可以工作,并且它符合"高级"进程间通信的描述。
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 用于AVX的ln(x)的实现,m256
- 在没有 const 强制转换的链表中实现高级方法
- 是否有在C++和Javascript中实现的高级进程间通信API
- 在c++中实现长方程时,如何通过高级方法提高性能?< / h1 >