适用于蜂窝连接的消息协议/代理?

时间:2018-08-22 17:13:26

标签: architecture protocols message network-protocols

我正在研究一个系统,其中多个设备(自动驾驶汽车,智能手机和固定传感器)收集数据,将其发送到后端,并执行用户通过Web前端提交的命令。设备通过蜂窝连接或wifi与后端无线通信。后端需要能够独立地命令每个设备。目前,这些设备不需要相互通信。

将有多达10-20个设备,每秒以10 kb / s的速度传输几次。除控制消息外,大多数数据都是可重复发送的,只有最近的实例才有意义。有些单元将由第三方进行编码,因此使用C#(x64)和Python / C ++(ARM64)来实现客户端应该相当容易。

我正在寻找一种消息协议/代理,该协议可以直接进行客户端-服务器之间的双向通信。到目前为止,我已经调查了:

  1. 纯TCP-太多样板无法使基于消息的通信正常工作(特别是与第三方相关),并且在限制性运营商/防火墙的情况下,我希望对HTTP使用后备选项。
  2. ZeroMQ(可能与ROUTER / DEALER结合使用)-关于HTTP的相同评论。
  3. MQTT-尽管我喜欢协议的简单性和客户端用法,但我实际上并不需要Pub-Sub,而只是需要双向客户端-服务器通道。
  4. AMQP / RabbitMQ-似乎有点过头了,而且对Pub-Sub也有同样的评论。
  5. gRPC-从服务器到客户端流式传输多种消息类型的简便方法,而且我不确定HTTP / 2如何在限制性运营商/防火墙上工作。
  6. WebSockets-我目前的主要选择,尽管我不确定它在蜂窝网络上处理掉线的能力如何。

还有其他建议的协议吗?我在评论中错过了什么吗?

1 个答案:

答案 0 :(得分:0)

aioconnectors非常适合您的情况,它仅允许双向客户端服务器通信。实际上,这是与websocket选项类似的方法,它增加了对所需的连接断开的支持,以及更多。

此处的文档:https://pypi.org/project/aioconnectors/

此处简短演示:https://www.youtube.com/watch?v=ZSoomtVcGxE