مدیریت 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 دیده میشود:
- Connected — UI عادی
- Reconnecting — submit غیرفعال، قیمت آخر با badge stale
- Offline — سفارش جدید block، دلیل واضح
over-subscribe نکنید
فقط symbolهای visible را subscribe کنید. با تغییر route unsubscribe کنید.
جمعبندی
WebSocket جایگزین REST نیست — کانال موازی با consistency متفاوت. state را دور همین مرزبندی بسازید.