我是第一次设计固件,但是遇到了不确定的解决方案。我需要能够将任意消息推送到嵌入式设备。内容可以是从八位字节流到json的任何内容。嵌入式设备无法通过网络直接访问,但是它们可以拨出互联网。
显而易见的解决方案是轮询。但我想尽可能使用推送机制进行更实时的通信。
是否存在可扩展的方法,例如从客户端(嵌入式设备)打开套接字,然后将其保持打开状态以允许从服务器端(云)推送消息?
答案 0 :(得分:2)
从嵌入式设备到服务器的每个网络通道都需要服务器提供网络和内存资源。在较大范围内,它可能会耗尽服务器,并且无法保持所有连接的打开状态。
针对您的情况的一种可能的解决方案是,每个嵌入式设备都将在服务器上注册自己,并告诉它如何在需要时重新连接到它。分发内容后,服务器将连接回每个嵌入式设备并进行推送。这样,连接仅在需要时才有效,并且也许可以使服务器重新连接到嵌入式设备。
例如,让我们假设嵌入式设备可以使用其IP地址直接通过网络连接。在注册过程中,客户端将连接到服务器,他将注册其IP地址。只要这些地址保持固定,服务器现在就可以将内容推送到远程设备。