代码之家  ›  专栏  ›  技术社区  ›  NeuronButter

如何使用Node.js将“消息”推送到设备上?

  •  0
  • NeuronButter  · 技术社区  · 5 年前

    现在有一个很奇怪的问题,我在网上找不到答案。以下是我计划如何建立一个项目: Controller App --> Node.js Server (probably Express) --> Some IoT Device Running Node.js Who Knows Where

    因此,从本质上说,控制器应用程序想要控制物联网设备,但它可能在任何地方。因此,它与位于静态IP上的服务器通信,静态IP将跟踪该物联网设备的位置(可能位于任何网络/IP/端口上)。因此,控制器应用程序将向服务器发送一个请求,服务器将告诉这个物联网设备它要做什么。

    问题是,Node.js服务器如何知道设备在哪里?

    建议的解决方案A:我想到的一种方法是拥有一个服务器,并在服务器和物联网设备之间共享一个秘密字符串。服务器将具有一些“终结点(?)”物联网设备可以“订阅”的。

    建议的解决方案B:物联网设备形成WebSocket或Sockets.io连接。虽然这可能是一个更好、更简单的解决方案,但当您添加许多设备时,服务器在实时与多个设备通信时是否会占用更多的资源?

    谢谢!

    1 回复  |  直到 5 年前
        1
  •  1
  •   jfriend00    5 年前

    “推”选项通常如下:

    1. 客户端轮询终结点 每隔一段时间检查一下有没有新的东西。不是真正的推动,而是非常简单的实现。使用此实现的可行性取决于您需要的推送的“实时性”。

    2. 客户端创建并维护一个持续的连接

    3. 服务器使用客户机中内置的一些现有“推送服务”。 这将适用于作为平台一部分提供推送服务的iOS或Android设备。不可用于自定义物联网设备。

    4. 第三方推送服务或库。 谷歌已经 Firebase Cloud Messaging