2

我目前正在使用 Pusher 通道在一些 IoT 传感器和移动应用程序之间进行双向通信。

我已经能够使用 Arduino 库和我的 React Native 应用程序让 Pusher 在 IoT 节点上工作。

但是,我遇到了一些障碍。由于内存限制,我的 IoT 传感器无法生成 JSON 有效负载和数组(它们以 30 秒的间隔广播 30 个读数的批次)。每次读取最多可以有 60 个字符的长度未处理,并且每 30 秒发送的完整有效负载至少为 1800 字节,然后是标头数据(传感器上下文的身份验证令牌和会话数据)。

我不想在我的 React Native 应用程序上解析这个十六进制数据(因为一些来自专有传感器,协议不能被泄露)所以需要它在我的 ExpressJS API 上发生(当前处理身份验证和历史数据检索)之前它进入 Pusher 并 ping React Native 应用程序。

我的问题:

  1. 如果传感器向我的 Express API 发出 POST 请求,其中路由执行从十六进制到漂亮 JSON 的处理(带有全文值!) - 我可以使用 Pusher 客户端将此数据获取到正确的通道吗?而不是让传感器直接与 Pusher 对话?
  2. 有没有办法通过我的 API 桥接 Pusher 服务,以便 React Native 应用程序“指向”我的 API 进行更新,而不是直接指向 Pusher?

这是我正在尝试实现的架构 - 希望那些有 Pusher 经验的人可以告诉我这是否可能: 架构图

我看过“pusher-http-node”服务器库,但没有具体说明为什么要使用它。

真的希望我不需要走 MQTT 路线并拥有自己的微服务(考虑到成本和可扩展性问题,我想避免这种情况)。

4

1 回答 1

0

Pusher 的 DevRel 在这里。

要回答您的问题:

  1. 这种设置是有道理的。您的 Express API 可以在将每个传感器事件发送到 Channels 服务之前对其进行预处理 - 您将使用服务器上的 Node SDK。该预处理可以包括将其放入正确的格式,并发送到正确的通道。

对于 SDK 之间的区别:

SDK 设计为在pusher-http-node服务器上运行,并且可以将消息发送到您想要的任何渠道。它还拥有你的私钥——你的 React Native 客户端 SDK 没有的东西。服务器 SDK 不实现订阅。

pusher-js另一方面,您在 React Native 应用程序中使用的客户端 SDK 只能订阅或发送客户端事件。

  1. 您的客户端应用程序应连接到 Pusher Channels 服务,以便它们可以接收实时更新。通道充当这里的传输。您的 Express API 应该pusher-http-node用来将这些事件发送到 Pusher Channels。

所以,总结一下:

  • 让您的 IOT 传感器将原始数据传送到您的 Express API
  • 在你的 Express API 中对这些原始事件进行预处理,将它们变成你的 React Native 应用程序可以理解和使用的东西
  • 在您的 Express API 中,使用pusher-http-node库(服务器 SDK)将这些处理后的事件发送到 Pusher Channels 服务
  • 在您的 React Native 应用程序中,使用pusher-js库(客户端 SDK)连接到 Channels 服务并订阅您的 Express API 发送的事件。

我希望这能澄清一点!

于 2019-01-13T06:21:05.293 回答