javascript - MQTT 作为集中式通信协议(protocol)

标签 javascript java c++ p2p mqtt

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

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

总而言之,我对该协议(protocol)有以下期望:

  1. 开销小
  2. 小负载
  3. 大量客户(从 100.000 开始)
  4. 处理不稳定的网络连接
  5. 可扩展性,例如通过使用多个代理实例
  6. 客户端之间的 P2P 连接(可以通过相关服务器解决)
  7. 如果可能,使用 Java、JavaScript 和 C++ 实现开源

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

最佳答案

我认为如果您以正确的方式使用 MQTT,您的所有期望除了 6. 都可以实现。你应该看看http://www.eclipse.org/paho/http://mosquitto.org/用于开源实现。

由于 MQTT 具有发布-订阅架构,其中每条消息都发送到消息代理(服务器)并由其分发,因此 P2P 可能是一个问题。您可以为两个客户端之间的每个连接使用专用主题,但消息仍必须通过消息代理传递。 作为解决方法,您可以通过 MQTT 在客户端之间协商 P2P 连接,然后将协商的 channel 与其他协议(protocol)一起使用。

关于javascript - MQTT 作为集中式通信协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022007/

相关文章:

用于测试 Internet Explorer 的 JavaScript

java - 将字符串拆分为数组字符串,名称位于第一个位置

C++:显式与隐式默认初始化

c++ - Qt 5.3 和 Win SDK 7.1 : Cannot open include file ammintrin. h

javascript - 正在将我的类组件重构为 Functional 组件,并且在 useEffect 方面遇到了一个非常困难的问题

javascript - 在固定定位元素中显示所有内容

javascript - 如何使图片变大(HTML/Javascript)?

java - 如何使用java在文本区域中逐行打印命令行输出?

java - 使用 Java ProcessBuilder 运行具有多个参数的 Windows .exe 文件不会按预期生成任何输出文件

c++ - 编译 libgdiplus 源代码以创建静态链接库,即 libgdiplus.so