Jetstream v2 گذشتهٔ شبکه رو هم میده
خلاصهٔ کاملتر
بلواسکای تو یه پست رسمی از Bluesky Protocol Services رونمایی کرده: یه برند و سایت تازه برای همون زیرساخت عمومیای که خودش روی شبکهٔ AT Protocol میچرخونه — از نمونههای Jetstream و relay گرفته تا endpointهای API بلواسکای. تو مقاله اومده که مشکل قبلی این بود که مستنداتشون درست مشخص نمیکرد کدوم تیکه رو بلواسکای بهعنوان سرویس بالا نگه میداره و از کجا باید شروع کرد؛ سایت جدید جای docs.bsky.app رو میگیره و قرارداد سرویسها رو شفاف میکنه.
خبر اصلی که همراه سایت اومده Jetstream v2 ـه. Jetstream — یعنی همون سرویسی که رویدادهای شبکه رو به شکل JSON ساده روی WebSocket بهت میرسونه — تا حالا فقط «الان» رو داشت؛ اگه رکوردهای قدیمی شبکه رو میخواستی باید خودت repoها رو بکفیل میکردی و بعد به استریم زنده سوییچ میکردی. نسخهٔ ۲ یه آرشیو فشرده از کل شبکه رو سمت سرور نگه میداره و با قابلیت Network Replay میذاره از هر نقطهای از گذشته جلو بیای و بدون گپ به سر استریم زنده وصل شی.
جریان کارش سادهست: فیلترهات رو با POST به planSnapshot میدی، سگمنتهای بستهشدهای که برمیگردونه رو با HTTP معمولی دانلود میکنی و آخرش یه بار به WebSocket زنده وصل میشی. Replay سمت سرور stateless ـه: نه cursor جدا برای هر مصرفکننده، نه subscription که ثبت کنی، نه چیزی که لازم باشه کلاینت نگه داره. اگه اصلاً استریم زنده نمیخوای، فقط با listSegments و getSegment یه کپی نقطهای از آرشیو میگیری. یعنی میتونی یه ماه پست رو تحلیل کنی بدون اینکه چیزی رو لوکال بکفیل کرده باشی.
چون سرو کردن این آرشیوها پهنای باند زیادی میبره، درخواستهای آرشیو از این به بعد توکن API لازم دارن؛ ولی استریم زندهٔ Jetstream همچنان باز و بدون احراز هویته و بلواسکای میگه برنامهای برای عوض کردنش نداره. نمونههای v2 روی wss://jetstream.us-west.bsky.network و wss://jetstream.us-east.bsky.network بالا اومدن، رفتار استریم زنده روی هر دو نسخه یکیه و v1 هم فعلاً دستنخورده میمونه — پس عجلهای برای مهاجرت نیست. خود Jetstream مثل قبل متنبازه و میتونی self-host کنی.
کنار این، SDK رسمی Jetstream برای TypeScript و Go هم منتشر شده تا کارهای تکراری مثل reconnect، حذف رویداد تکراری، مدیریت cursor و decode کردن رویدادها به رکورد typed رو خودش انجام بده. یه شیء Jetstream میسازی، فیلترت رو میدی و با for await روی رویدادها میچرخی:
const js = new Jetstream('https://jetstream.us-east.bsky.network')
for await (const evt of js.live({ collections: [app.bsky.feed.post] })) {
if (evt.kind === 'commit' && evt.commit.operation === 'create') {
console.log(evt.commit.collection, evt.commit.record.text)
}
}همزمان SDK تایپاسکریپت خود بلواسکای هم روی @atproto/lex بازنویسی شده تا مسیرهای قدیمی نگهداری نشن، و مرجع HTTP هم بهروز شده: متدهای network.bsky.jetstream.* که Replay رو میچرخونن حالا با اسکیمای کامل درخواست و پاسخ قابل مرورن. کد قدیمی @atproto/api هنوز مثل قبل کار میکنه.
نکات کلیدی:
- نمونههای Jetstream v2 روی ریجنهای us-west و us-east بالا اومدن؛ v1 فعلاً بدون تغییر میمونه.
- Network Replay سمت سرور stateless ـه: نه cursor برای هر مصرفکننده، نه subscription، نه state روی کلاینت.
- گرفتن آرشیو توکن API میخواد، ولی استریم زندهٔ Jetstream باز و بدون احراز هویت میمونه.
- SDK رسمی Jetstream برای TypeScript (روی npm) و Go منتشر شده.
- SDK تایپاسکریپت بلواسکای روی @atproto/lex بازنویسی شده؛ @atproto/api قدیمی هنوز کار میکنه.




