Javascript 作为集中式通信协议的MQTT

Javascript 作为集中式通信协议的MQTT,javascript,java,c++,p2p,mqtt,Javascript,Java,C++,P2p,Mqtt,我想为大量设备实现一项服务。该服务应该能够在服务器和客户端之间发送/接收(小-最大1kB)消息,也能够在设备和设备之间发送/接收p2p消息 目前,我正在考虑使用MQTT实现这一点,因为它似乎是一个轻量级的低流量生成协议。正如本文所述,XMPP也可能是一种替代方案,但我不确定这是否能提供我所需要的性能 总结起来,我对协议有以下期望: 小开销 小载荷 客户数量多(从10万开始) 处理不稳定的网络连接 可伸缩性—例如,通过使用多个代理实例 客户端之间的P2P连接(可通过相关服务器解决) 如果可能的话,

我想为大量设备实现一项服务。该服务应该能够在服务器和客户端之间发送/接收(小-最大1kB)消息,也能够在设备和设备之间发送/接收p2p消息

目前,我正在考虑使用MQTT实现这一点,因为它似乎是一个轻量级的低流量生成协议。正如本文所述,XMPP也可能是一种替代方案,但我不确定这是否能提供我所需要的性能

总结起来,我对协议有以下期望:

  • 小开销
  • 小载荷
  • 客户数量多(从10万开始)
  • 处理不稳定的网络连接
  • 可伸缩性—例如,通过使用多个代理实例
  • 客户端之间的P2P连接(可通过相关服务器解决)
  • 如果可能的话,用Java、JavaScript和C实现开源++

  • MQTT对我来说是正确的方法,还是应该更好地考虑一些替代方法?还请记住,我需要创建一个高度可扩展的服务。

    我认为除了6之外,您的期望都是一样的。如果您使用正确的方式,可以通过MQTT实现。您应该了解和了解开源实现

    由于MQTT有一个发布-订阅体系结构,其中每个消息都被发送到消息代理(服务器)并由其分发,因此P2P可能是一个问题。您可以为两个客户端之间的每个连接使用一个专用主题,但是消息仍然必须通过消息代理。
    作为一种解决方法,您可以通过MQTT协商客户端之间的P2P连接,然后使用另一个协议的协商通道。

    正如leikes所说,通过MQTT,您可以获得所需的所有功能,第6点是使用代理实现的。 MQTT最大的不足在于它不支持本地请求/应答模式(如HTTP或AMQP),而是完全支持发布/订阅模式。 当然,如果您需要请求/应答,您需要将其放入协议本身之上的一个层中,定义正确的主题和负载,以在请求和响应之间创建匹配/关联逻辑


    保罗。

    听起来不错。我也做出了类似的决定,并决定使用MQTT。MQTT比XMPPSo更“健谈”,你是否考虑过另一个提供相同功能的协议?现在我也在看HTTP长轮询。@是的,但我放弃了XMPP和长轮询(以及JMS…),谢谢您的输入!我已经在考虑使用这个解决方案,因为这也将避免可能发生的任何NAT问题。泛美卫生组织是一个很好的建议(我想),谢谢你的建议。