MQTT用户是否需要静态IP



我想开发一个带有1个发布者的订阅者模型,在nodejs中开发了许多订户。

目前,我的想法是使用普通的Websocket。问题在于,每个订户都需要静态IP 和端口转发,如果它通过Internet运行。这不适合要求。

解决方案似乎是MQTT,因为它应该适合该用例,但是我看到它也可以通过Websockets运行,该Websockets应该导致相同的问题,或者MQTT是否以不同的方式处理它?

本质上,我需要一个解决方案,在该解决方案中,发布者具有静态IP,并且订户可以在世界任何地方。MQTT是否可以使用,还是我需要其他解决方案?

否,只有MQTT经纪人需要固定的IP地址(最好是DNS条目),以便客户知道在哪里找到它。

所有MQTT客户端(订户和发布者),无论是本机MQTT还是Websockets上的MQTT,都将连接到经纪人。这意味着它们甚至在使用动态IP地址运行的NAT路由器后面工作(每当IP地址更改时都会断开连接,但几乎所有MQTT客户端都会自动重新连接)。

这些功能使MQTT成为消费者IoT设备的好选择,因为上述情况几乎是每个家庭宽带设置。

听起来您的订阅设备在本地网络上,是的,您将需要一个静态IP来进行网络和内部转发(更不用说许多系统中的防火墙异常)本地设备,用于提供传入请求。无论协议如何,您的订户都不需要是服务器。让他们查询中央服务器/系统更安全,最终更容易。只有该系统需要IP。

Websockets不需要需要端口转发 - 它们通常用于避免它。客户端打开与服务器的连接,然后继续使用它发送和接收。从网站接收页面时,它不需要端口转发。如果您的发布者是服务器或其他曝光系统,则可以通过配置订户为其打开Websocket来完成工作。

但是,您可能仍然需要mqtt:

  • 听起来您的发布者可能是Web服务器以外的其他东西,并且由于您提出了这个问题,因此可能不适合您的客户服务。使用MQTT客户端,它可以发布到服务器上的MQTT代理,然后将消息传递给订户的客户端。
  • 开发强大的发布订阅功能是额外的工作,现有的MQTT软件通常会比新开发更好。

有了一些额外的配置,甚至可以通过WebSockets进行MQTT订阅,但即使是常规订阅,也可以避免使用静态IP,PortForwarding和Inbound Firewall规则

探索一种方法RPC方法。它将不需要公共IP地址或端口转发。

最新更新