@ cccteam/ 资源- firestore
Firestore 更改实时页面的种子 @cccteam/resource。 。 。 .
要求使用直播列表或直播行的页面在不投票的情况下保持当前状态:服务器
将每个订阅用户的更改文档写入该用户的更改集, 此种子
是每个标签的收听者 读取它,将每个更改 交给客户端的直播
,用于重排行或列出更改名称。 这是唯一的包
3,取决于火地JS SDK;客户端保持自由.
页面选择什么,成本什么, 和它从未做的都是在客户端的README中 "活页"下. 这套合同没有增加任何内容 更改,客户端被写入 以便另一个可以替换它.
npm install @cccteam/resource @cccteam/resource-firestore firebase
firebase 是一个对等依赖: 应用程序安装一次, 所以 SDK 的一个副本
提供饲料和应用程序对Firebase的其他任何服务.
使用
建立种子,一旦会议得到认证,就交给客户端的直播会话; 关闭时停止会话,否则会话本身会被登录.
import { firestoreChangeFeed } from '@cccteam/resource-firestore';
const api = createApi({ baseUrl: '/api' });
await api.live.start(firestoreChangeFeed());
// ...
await api.live.stop();
角化应用程序提供它,和 AuthService 开始并停止:
import { CHANGE_FEED } from '@cccteam/resource-angular/types';
import { firestoreChangeFeed } from '@cccteam/resource-firestore';
providers: [{ provide: CHANGE_FEED, useFactory: () => firestoreChangeFeed() }];
饲料会做什么
start(identity) 接收服务器为会话主机在
GET <prefix>/live/token:GCP项目,Firestore数据库,或者模拟器
或自定义的标志。 它为项目初始化了自己的Firebase应用程序(和网络API)
键,在生产中)打开数据库,并作为用户连接:对模拟器,
与 SDK 为 uid 的模拟用户符号(connectFirestoreEmulator(db, host, port, { mockUserToken: { sub: uid, user_id: uid } })); 生产中,通过签署自定义符号
通过 Firebase Auth 在只保存在内存的认证上: 身份为
会话停止并撤销,所以没有写到浏览器的存储器上,而且 a
页面加载开始于没有用户可以重新加载. 那它会听 users/{uid}/changes,命令
以 at 一旦看到变化,就与之后的改变联系在一起.
一个听众质素的第一快照 看到了最后的变化 并释放出什么。 一开始
文档在页面本身的第一次获取之前已经存在;在错误发生后,重新同步
恢复释放出所有的东西 以后的每个文件成为一份文件 ChangeEvent数字 :
联合国 kind (单位:千美元)row, (中文(简体) ), list,或 resource, (中文(简体) ), resource, (中文(简体) ), key, (中文(简体) ), domain,以及 deleted 作为
文档携带它们,以及 at 作为十进制中的 unix 微秒, 版本的反切
携带。 文档在第二个内重写( 服务器连接到一个目标 )
(每秒)向前移动,是又一个事件;文件到期于设定的结果
没有.
静静的伸展并不是漏掉任何东西的证据:听众保持其联系
并在下降后恢复,更改文档直播10分钟,所以更改只丢失
当听者倒下或被停职的时间更长时. 因此,饲料喷出
resync 两次,没有其他。 当一个听众报告错误时,它一无所获
更多,所以在等待后再次启动,每次失败都会加倍(一秒,上升)
以最后的变化为界
转动。 当页面再次显出时(visibilitychange 改为可见,或 pageshow
从后向缓存),被隐藏的时间超过更改文档活取的时间后,
由于浏览器会节流或放下背景页面的连接,所以种子会发出再同步. 这个
live session 反射每个活行和列表 无论是用哪种方式, 并进行同样的
当它开始.
stop() 释放收听器,将身份签出,并删除其初始化的应用程序.
一站一站都记不起来:后起再听.
安全规则是服务器的船让用户读取他们自己的更改集,但什么都没有 其它的, 不要让客户端写; 种子从不写.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}什么是可以描绘的
firestoreChangeFeed(options) 带 resyncAfterHidden (一个页面可能隐藏多久之前)
它的返回是一个再同步; 更改文档的默认寿命, retryDelay 财务报告和审定财务报表
maxRetryDelay (重启等), now (钟声)和 visibility 财务报告和审定财务报表 page (其中
文档的能见度和页面的隐藏和显示被听到; 文档和窗口由
默认). 每一个都有一个默认,一个Spec是通常的转出一个的原因.
测试
谱写反对 bun:test 运行 bun test projects/resource-firestore/
(后面的斜线使Angular 图书馆不见踪影); bun run typecheck:firestore
用 tsc 编译 projects/resource-firestore/tsconfig.spec.json。 。 。 .
bun run test:firestore 运行两者。 这些规格取代了三个SDK模块(firebase/app, (中文(简体) ),
firebase/auth, (中文(简体) ), firebase/firestore) 记录待机 mock.module驱动器
收听者的快照和手接出错,请站在文档和窗口中隐藏
并显示页面,并读取事件和再链接;没有Firestore、模拟或真实的
参与.