我如何使用单个 Node.JS 服务器订阅来自许多不同用户的许多 NEST 设备

How can I subscribe to many NEST devices from many different users using a single Node.JS server

我正在尝试为一个客户确定一个项目的范围,该客户希望能够从一台或多台 Node.js 服务器为许多不同的用户订阅许多(可能是数千个)NEST 设备。这个想法是聚合来自许多客户拥有的许多设备的更改事件。 Node.js 可以同时处理那么多 Firebase 更改订阅吗?如何最好地管理它?

谢谢

这里是 Firebase 工程师,

当前这种方法的问题在于,Nest 目前只允许 single token to authenticate at a time,并且由于 Firebase 客户端在经过身份验证后缓存身份验证状态,为了在其中一台服务器上的单个进程中执行此操作,您将不得不授权,执行操作,然后取消授权,并为每一个不是很有效的操作重复。监听效率特别低,因为这意味着你需要打开 n 套接字连接,并且不得不以这种方式在它们之间切换有点违背了使用 Firebase 的初衷(能够保持连接打开并获取推送更新)。

您可以通过以下几种方式解决此问题:

  • 切换到多进程和多服务器,其中每个进程都有一个打开的套接字和它自己的身份验证令牌。使用我们的 Node or Java 客户端通常是最好的选择。
  • 使用streaming REST API在同一台服务器上打开多个连接。

希望对您有所帮助!

您可以在 node.js 服务器中使用 Firebase 客户端,而不是 REST Streaming,方法是在 Firebase 引用创建调用中使用(未记录的)"context" 参数,如下所示:

var context = new Firebase.Context();
var ref = new Firebase('wss://developer-api.nest.com', context);
ref.authWithCustomToken(...)