在最近的一个问题中,有人指出Firebase 定价文档指出:
REST API 请求不计入您的连接限制
我理解(并欣赏)此声明的含义:针对 REST API 的 GET、PUT、POST 和 DELETE 请求通常用于对数据的非实时操作,例如下载数据以进行备份或批量计算。这些通常是不常见的、相对短暂的操作,通常应该使实时数据连接的数量相形见绌。
但是当我们查看Firebase 的 REST 流 API时,情况就不同了。与 REST API 的其余部分不同,流式传输显然是为实时数据连接而设计的。
根据上面引用的文档,这些连接不应计入连接限制。但根据Firebase 开发人员在 Google Groups 上的评论:
并发 [连接] 是实时客户端或流式 REST
我强调的部分似乎表明使用流式 REST API 的客户端确实计入连接限制。
为了测试,我编写了一个小型 C# 客户端,它使用 Firebase REST 流 API 来监控节点:
var url = "https://<my>.firebaseio.com/clock/.json";
var client = new WebClient();
client.Headers["Accept"] = "text/event-stream";
using (var stream = client.OpenRead(url)) {
using (var reader = new StreamReader(stream)) {
string line = null;
while (null != (line = reader.ReadLine())) {
(DateTime.Now.ToShortTimeString() + line).Dump();
}
}
}
启动这个程序大约 15 分钟后,我的 Firebase 仪表板中的并发连接确实增加了 1。运行第二个实例,仪表板中的并发连接数再次增加。
所以这个测试似乎证实了 Google Groups 上的暗示:REST 流式客户端算作并发连接。有人可以确认这一点或发现我的测试中的缺陷吗?