@ atproto/ sync: atproto 同步工具
用于同步来自该数据库的数据的 TypeScript 库 原子弹 腾讯网. 目前只支持火花( 中继) 订阅
使用量
烟花课会打开一个网口连接 com.atproto.sync.subscribeRepos 在给定的repo主机上(默认由 Bluesky 运行的中继器).
每个事件都将被解析,认证,然后传递给所提供的 handleEvt 它可以处理索引.
打开 Commit 事件,火花会验证签名和回波证明,以确保事件真实. 此选项可随 unauthenticatedCommits 旗帜。 同样的 Identity 事件,火花将获取最新的 DDE 文档用于重播,并对相关控件进行双向验证。 此选项可随 unauthenticatedHandles 旗帜.
某类事件可使用 excludeIdentity编号 :excludeAccount编号 :excludeCommit 旗帜。 可使用 Repo 写入过滤到特定收藏 filterCollections。默认情况下,所有事件都会被解析并传递给处理器。 请注意,目前这种被过滤过的客户端正在发生,尽管我们很可能会在未来引入服务器端的方法来完成这项工作.
遇到的非致命错误将转给所需的 onError 处理者。 在大多数情况下,这些可以只是登录.
在使用火花类时,事件会按序处理. 每个事件都必须在下一个事件解析和认证之前完成处理.
import { Firehose } from '@atproto/sync'
import { IdResolver } from '@atproto/identity'
const idResolver = new IdResolver()
const firehose = new Firehose({
idResolver,
service: 'wss://bsky.network',
handleEvt: async (evt) => {
if (evt.event === 'identity') {
// ...
} else if (evt.event === 'account') {
// ...
} else if (evt.event === 'create') {
// ...
} else if (evt.event === 'update') {
// ...
} else if (evt.event === 'delete') {
// ...
}
},
onError: (err) => {
console.error(err)
},
filterCollections: ['com.myexample.app'],
})
firehose.start()
// on service shutdown
await firehose.destroy()
对于更坚固的索引管道,建议使用所供应的 MemoryRunner 课。 这提供了一个内膜分出队列 。 由于来自给定回波的事件必须按顺序处理,这使得事件可以同时处理,同时仍然可以连续处理来自任何给定回波的事件.
这个 MemoryRunner 还根据上次完成的连续工作跟踪内部光标。 这保证了不放弃任何事件,虽然这确实意味着有些事件可能偶然被重放(如果websocket下降并重新连接),因此建议任何索引逻辑都是一能的. 可选 setCursor 参数可以提供给 MemoryRunner 用于持续存储最近处理的光标.
import { Firehose, MemoryRunner } from '@atproto/sync'
import { IdResolver } from '@atproto/identity'
const idResolver = new IdResolver()
const runner = new MemoryRunner({
setCursor: (cursor) => {
// persist cursor
},
})
const firehose = new Firehose({
idResolver,
runner,
service: 'wss://bsky.network',
handleEvt: async (evt) => {
// ...
},
onError: (err) => {
console.error(err)
},
})
firehose.start()
// on service shutdown
await firehose.destroy()
await runner.destroy()
许可证
根据麻省理工学院和Apache 2.0条款,这个项目具有双重许可证:
- 麻省理工学院许可证LICENSE-MIT.txt (英语) 或者说 http://opensource.org/licenses/MIT 互联网档案馆的存檔,存档日期2013-12-02(中文(简体) )
- Apache 许可证,2.0版本, ((原始内容存档于2017-09-31) (英语). LICENSE-APACHE.txt 或者说 http://www.apache.org/licenses/LICENSE-2.0 (中文(简体) )(中文(简体) )
下游项目和终端用户可自行选择单独或共同发放许可证。 这种双重许可的动机是Apache 2.0提供的额外软件专利保证.