我正在寻找允许客户端从服务器接收消息(推送通知)的选项。客户端是一个ARM/Linux嵌入式设备,在功能上类似于Raspberry Pi。
因为客户机可能在防火墙后面,所以我想使用可以在HTTP之上传输的面向消息的中间件(MOM)。我认为这排除了那些基于AMQP的妈妈。
MOM服务器应该支持Linux平台。MOM还应该提供一个可以在ARM/Linux平台上编译的C或C++客户端库。
我知道HTTP长轮询技术,以及HTML5 WebSockets和服务器发送的事件。但是我更喜欢一个更高级(但很轻量级)的解决方案,它负责通过HTTP在A点和B点之间传输消息。如果必须将消息格式化为XML、JSON、纯文本或二进制,则无关紧要。
发布于 2013-08-26 19:17:33
我成功使用的两个是XML-RPC和gSOAP。
发布于 2013-08-27 20:13:33
根据我的研究,这些是可用的MOM技术,它们使用HTTP作为传输,并具有C/C++客户端库:
XMPP
可扩展消息和存在协议(XMPP)是一种基于XML (Extensible Markup Language).The协议的面向消息中间件的通信协议,最初命名为Jabber,1999年由Jabber开放源代码社区开发,用于几乎实时、即时消息(IM)、存在信息和联系人列表维护。为了便于扩展,该协议还被用于发布订阅系统、VoIP信令、视频、文件传输、游戏、物联网等应用程序,如智能电网和社交网络服务。(从维基百科)
ActiveMQ
Apache是一个用ActiveMQ编写的开源消息代理,它与一个完整的(JMS)客户端一起编写。它提供了“企业特性”,在这种情况下,这意味着促进来自多个客户端或服务器的通信。受支持的客户端包括明显的通过JMS1.1的Java以及其他几个“跨语言”客户机。除了虚拟内存、缓存和日志持久化之外,通信还具有计算机集群和将任何数据库用作JMS持久性提供程序的能力。(从维基百科)
Zerogw是一个http到zeromq网关。这意味着它侦听HTTP、解析请求并使用zeromq (ZMQ_REQ)发送请求。然后等待回复并使用从zeromq套接字接收到的数据进行响应。 从V0.3zerogw开始,它还支持WebSockets。Websockets是通过使用ZMQ_PUB套接字转发传入消息和从ZMQ_SUB套接字监听clommand来实现的。每个WebSocket客户端都可以订阅无限数量的主题。它控制消息(例如订阅)或消息到指定的主题,这将有效地发送给订阅到该特定主题的每个WebSocket。(来自GitHub零域页面)
还有HyperText InterORB协议(HTIOP),但是TAO似乎是唯一支持它的CORBA。似乎没有人使用它(如果我错了,请纠正我)。
有正在进行的工作使OMG的数据分发处 (DDS)网络支持.
我也开始考虑使用WebSockets进行双向通信的想法,尽管它们的本质是“低级”的。对于感兴趣的人,现有的C/C++库包括:
有一个开放的Websocket应用程序消息传递协议 (WAMP),它为远程过程调用和发布-订阅模式提供异步消息传递模式。WAMP有很多实现,但是没有一个是用C/C++编写的。
https://stackoverflow.com/questions/18450996
复制相似问题