根据我的研究,这些是使用 HTTP 作为传输的可用 MOM 技术,并且具有 C/C++ 客户端库:
Extensible Messaging and Presence Protocol (XMPP) 是一种基于 XML(Extensible Markup Language)的面向消息中间件的通信协议。该协议原名为 Jabber,由 Jabber 开源社区于 1999 年开发,用于近实时、即时消息 (IM)、状态信息和联系人列表维护。该协议设计为可扩展的,还用于发布-订阅系统、VoIP 信令、视频、文件传输、游戏、物联网应用(如智能电网)和社交网络服务。(来自维基百科)
Apache ActiveMQ 是一个用 Java 编写的开源消息代理以及完整的 Java 消息服务 (JMS) 客户端。它提供了“企业功能”,在这种情况下,这意味着促进来自多个客户端或服务器的通信。支持的客户端包括显而易见的 Java(通过 JMS 1.1)以及其他几个“跨语言”客户端。除了虚拟内存、缓存和日志持久性之外,还可以通过计算机集群和使用任何数据库作为 JMS 持久性提供程序等功能来管理通信。(来自维基百科)
Zerogw 是一个 http 到 zeromq 的网关。这意味着它侦听 HTTP、解析请求并使用 zeromq 套接字 (ZMQ_REQ) 发送它。然后等待回复并使用从 zeromq 套接字接收到的数据进行响应。
从 v0.3 zerogw 开始也支持 WebSockets。Websocket 是通过使用 ZMQ_PUB 套接字转发传入消息并从 ZMQ_SUB 套接字监听 clommands 来实现的。每个 WebSocket 客户端都可以订阅无限数量的主题。每个 zeromq 消息要么控制消息(例如订阅),要么控制指定主题的消息,这些消息将有效地发送到订阅该特定主题的每个 WebSocket。(来自 GitHub zerogw 页面)
还有超文本 InterORB 协议 (HTIOP),但 TAO 似乎是唯一支持它的 CORBA ORB。似乎没有人使用它(如果我错了,请纠正我)。
使 OMG 的数据分发服务(DDS) 支持 Web 的工作正在进行中。
尽管 WebSockets 具有“低级”性质,但我也开始接受使用 WebSockets 进行双向通信的想法。对于那些感兴趣的人,可用的 C/C++ 库包括:
有一个开放的Websocket 应用程序消息传递协议(WAMP),它为远程过程调用和发布-订阅模式提供异步消息传递模式。WAMP有许多实现,但没有一个是用 C/C++ 编写的。