我正在使用MQTT / node实现轻量控制,它主要由一些元素组成:设备(位于NAT后面),服务器(mqtt /代理),客户端(Web浏览器)

体系结构的一部分/我想到的过程是:
设备需要打开服务器的套接字并使其保持打开状态(而由于NAT而不能以其他方式打开),因此每当客户端向服务器发送控制命令时,服务器

将其发送到设备。

所以我的更广泛的问题是:
如何在IoT中正常处理设备背后的NAT /服务器连接?

注意:我看到过很多问题,它们解释了设备写入云然后客户端从云中读取数据的情况,这并不需要一直打开套接字(只是在设备写入时),但是还没有没有看到服务器/客户端要从NAT写入设备的情况

评论

欢迎来到IoT.SE!我建议将此范围缩小一点。此外,您的标题与问题末尾提出的问题不符。如果您可以使其更具凝聚力,那么问题将跟随单个问题或您要回答的问题,那就太好了。
飞利浦Hue灯泡也不直接连接到云,而是使用网关。网关维护与云的出站连接

在这个论坛上,stackoverflow.com和softwareengineering.stackexchange.com上,您的标题都有很多现有的答案,尽管我不确定您的实际问题,但

谢谢@ anonymous2我会更好地缩小范围,尽管最后一个问题确实与标题问题匹配。莫格(Mawg),我看过很多问题/文章,它们解释了客户端仅读取内容的体系结构,例如传感器温度将套接字打开并写入云,以便客户端稍后可以读取。我还没有看到这种情况(这需要一种不同的方法才能从云写入nat后面的设备)

另请参阅将IoT设备暴露于外部Internet时如何避免端口转发?潜在的消费物联网设备通常如何启用Internet连接?也可能与您有关。

#1 楼

它们由设备连接并保持正在进行的TCP连接处理。

一旦打开,TCP连接就是双向的,只要设备通过NAT网关打开出站连接,云就可以推送信息/命令返回该链接。

评论


感谢您的回答@hardillb。 TCP连接永远保持打开状态吗?是插座吗?

– Bermick
18年3月2日在11:11

是的,它永远有效地保持开放

– hardillb
18 Mar 2 '18 at 11:12

简化它,使其永远保持打开状态。实际上,客户端和代理之间必须进行ping操作,以使连接保持活动状态,并且还必须牢记重新连接策略,以确保连接真正断开。

– bgusach
18 Mar 6 '18 at 9:15

现有的解决方案可以实现什么,而不是自己编写一个拥有许多tcp连接的服务器

– Nadav B
20年7月23日在11:31

@NadavB例如MQTT(几乎所有大型云提供商的IoT产品都使用它)

– hardillb
20年7月23日在11:35