允许现有API与Pusher桥接,并允许在传输之前对有效载荷进行预处理

时间:2019-01-12 10:15:20

标签: express iot pusher pusher-js

我目前正在使用Pusher通道进行一些物联网传感器和移动应用之间的双向通信。

我能够使用Arduino库以及React Native应用程序使Pusher在IoT节点上工作。

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

我不想在我的React Native应用程序上解析此十六进制数据(因为其中一些来自专有传感器,在该协议中不存在泄露协议的风险),因此需要在我的ExpressJS API上进行(当前处理身份验证和历史数据)检索)之前,它会进入Pusher并ping通React Native应用。

我的问题:

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

这是我要实现的体系结构-希望那些有Pusher经验的人可以告诉我是否可行: Architecture Diagram

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

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

1 个答案:

答案 0 :(得分:0)

此处是Pusher的DevRel。

要回答您的问题:

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

关于SDK之间的区别:

pusher-http-node SDK旨在在服务器上运行,并且可以将消息发送到所需的任何渠道。 它还拥有您的私钥-这是您的React 本机客户端SDK没有。 Server SDK不实现订阅。

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

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

因此,总结一下:

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

我希望这可以澄清一下!