MQTT用户是否需要静态IP?

问题描述 投票:0回答:2

我想开发一个发布商 - >订阅者模型,其中包含1个发布者和nodejs中的许多订阅者。

目前我的想法是使用普通的websocket。这样做的问题是,如果每个用户在互联网上运行,则需要静态IP和端口转发。这不符合要求。

对此的解决方案似乎是MQTT,因为它应该适合该用例,但我看到它也运行在websockets上,这应该导致相同的问题或MQTT处理它的方式不同?

基本上我需要一个解决方案,其中发布者具有静态IP,订阅者可以在世界的任何地方。这可能是MQTT还是我需要另一种解决方案?

node.js websocket mqtt one-to-many publish-subscribe
2个回答
0
投票

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

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

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

  • 听起来您的发布商可能不是网络服务器,并且可能不如您的客户服务,因为您提出了这个问题。使用MQTT客户端,它可以发布到服务器上的MQTT代理,然后服务器将消息传递给订户的客户端。
  • 开发强大的发布 - 订阅功能是额外的工作,现有的MQTT软件通常比新的开发更好。

通过一些额外的配置,甚至可以通过WebSockets进行MQTT订阅,但即使是常规订阅也可以正常工作,以避免静态IP,端口转发和入站防火墙规则。


0
投票

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

所有MQTT客户端(订阅者和发布者),无论是原生MQTT还是基于websockets的MQTT,都可以连接到代理。这意味着它们甚至可以在运行动态IP地址的NAT路由器后面工作(当IP地址发生变化时,它们都会断开连接,但几乎所有MQTT客户端都会自动重新连接)。

这些特性使MQTT成为消费者物联网设备的理想选择,因为上述情况几乎是每个家庭宽带设置。

© www.soinside.com 2019 - 2024. All rights reserved.