پرش به محتوای اصلی
حسین خلیلی
بازگشت به وبلاگ

مدیریت State معاملات با WebSocket در صرافی

درس‌هایی از ساخت feed قیمت لحظه‌ای و state سفارش در arz.me — بدون over-engineering.

reactwebsocketstate-management

نوشته حسین خلیلی · 1 دقیقه مطالعه

فرانت‌اند صرافی یعنی کار در دو timeline همزمان: آخرین وضعیت تأییدشده سرور، و اتفاقی که الان در بازار می‌افتد.

در arz.me قیمت‌ها از WebSocket می‌آیند، اما state سفارش باید با REST هماهنگ بماند. اشتباه رایج: از روز اول همه‌چیز را در یک store بزرگ ریختن.

concernها را زود جدا کنید

  • Market stream — ephemeral، پرفرکانس، tick کهنه را می‌شود دور ریخت
  • سفارش کاربر — فقط بعد از تأیید API authoritative است
  • UI — وضعیت اتصال، backoff reconnect، زمان آخرین به‌روزرسانی

stream بازار را در ماژول جدا نگه دارید تا هر tick باعث re-render actionهای trade نشود.

reconnect یک فیچر محصول است

در نوسان، قطعی connection دیده می‌شود:

  1. Connected — UI عادی
  2. Reconnecting — submit غیرفعال، قیمت آخر با badge stale
  3. Offline — سفارش جدید block، دلیل واضح

over-subscribe نکنید

فقط symbolهای visible را subscribe کنید. با تغییر route unsubscribe کنید.

جمع‌بندی

WebSocket جایگزین REST نیست — کانال موازی با consistency متفاوت. state را دور همین مرزبندی بسازید.