وبسوکت جای SSE برای استریم هوش مصنوعی
خلاصهٔ کاملتر
آبلی توی این مقاله از یه مثال مشخص شروع میکنه: یه ایجنت پشتیبانی سفارش رو پیدا کرده و یه قدم مونده بازپرداخت رو انجام بده، فقط منتظر تأیید کاربره. روی SSE (یعنی Server-Sent Events، کانالی که فقط از سرور به کلاینت داده میفرسته) این تأیید اصلاً راهی برای رسیدن نداره و هر سیگنال باید با یه درخواست HTTP جدا بره. وبسوکت یه اتصال رو همزمان در هر دو جهت باز نگه میداره، پس لغو و تأیید همون لحظه میرسه.
به گفتهٔ نویسنده، دوطرفه بودن تنها برتری نیست. بعد از باز شدن اتصال وبسوکت هر فریم فقط حدود ۲ تا ۶ بایت سربار داره، ولی هر تکهٔ SSE باز هم داخل همون پاسخ HTTP میره و هدرها تکرار میشن؛ برای مدلی که ثانیهای دهها توکن میفرسته این فاصله به هزینهٔ واقعی زیرساخت تبدیل میشه. وبسوکت فریم باینری رو هم مستقیم میبره و ترتیب پیامها رو نگه میداره، ولی SSE فقط متن UTF-8 قبول میکنه و مثلاً تکههای صوت باید base64 بشن.
وبسوکت هم همهچیزو حل نمیکنه. اتصال قطعشده خودش برنمیگرده، پیام خودش بین چند سرور یا چند دستگاه پخش نمیشه و هیچ تضمینی نیست که یه پیام دقیقاً یه بار و به ترتیب برسه. تو مقاله اومده که Socket.IO و Centrifugo اتصال مجدد و pub/sub رو آماده میدن، ولی تضمین تحویل ندارن و بروکر و کلاستر زیرشون بازم دست تیم خودته. هر نود Socket.IO هم حدود ۱۰ تا ۳۰ هزار اتصال همزمان برمیداره.
بخش اقتصادی مقاله به گزارشهای خود آبلی تکیه داره، پس باید با همین حساب خوندش: ساخت زیرساخت از صفر حدود ۷ مهندس و ۶ ماه و ۵۲۵ هزار دلار، در برابر ۲۵ هزار دلار برای یکپارچهسازی یه پلتفرم مدیریتشده. نویسنده خودش هم میگه خودمیزبانی همیشه غلط نیست؛ جایی که زیرساخت و on-call از قبل تو شرکت هست، قوانین محل نگهداری داده اجازهٔ پلتفرم بیرونی نمیده، یا مقیاس واقعاً کوچیکه، منطقیه.
یه نکتهٔ فنی جالب هم دربارهٔ لایههای session سمت مدل داره: نویسنده به مستندات انتروپیک و اوپنایآی ارجاع میده که جریان رویدادهاشون replay نداره. یعنی اگه وسط یه tool call اتصال بیفته، کلاینت باید کل تاریخچهٔ رویدادها رو بگیره و با event id تکراریها رو حذف کنه. پس سپردن اجرای ایجنت به سرویس خود مدل، کار رسوندن جواب به مرورگر یا موبایل کاربر رو از دوش تیم برنمیداره.
نکات کلیدی:
- SSE طبق خود استانداردش یکطرفهست، پس لغو، تأیید ابزار یا هدایت ایجنت باید با درخواست HTTP جداگانه بره.
- هر فریم وبسوکت حدود ۲ تا ۶ بایت سربار داره، در حالی که SSE هدرهای HTTP رو روی هر تکه تکرار میکنه.
- SSE فقط UTF-8 میبره، پس دادهی باینری مثل تکههای صوت باید base64 بشه و حجمش بالا بره.
- Socket.IO و Centrifugo تضمین تحویل «دقیقاً یک بار» و ترتیب بین کانالها ندارن.
- هر نود Socket.IO حدود ۱۰ تا ۳۰ هزار اتصال همزمان برمیداره.
- طبق مستنداتی که مقاله نقل میکنه، استریم رویداد Managed Agents انتروپیک و Agents API اوپنایآی replay نداره.
- اعداد هزینه (۵۲۵ هزار در برابر ۲۵ هزار دلار) از گزارش خود آبلیست، نه یه منبع مستقل.




