راه درست اینه که WebSocket رو فقط برای ارتباط لحظهای نبینید؛ باید اطلاعاتی که بین قطع و وصل شدن اتفاق افتاده، جایی روی سرور ذخیره بشه.
یک روش معمول اینه که هر پیام یک ID یا sequence number داشته باشه. کلاینت آخرین پیامی که گرفته رو نگه میداره. وقتی دوباره وصل شد، به سرور میگه مثلاً «من تا پیام ۱۵۰ رو دارم». سرور هم پیامهای ۱۵۱ به بعد رو از دیتابیس یا صف پیامها میفرسته.
مثلاً:
دریافت تا 150 → اینترنت قطع → پیامهای 151 تا 160 ثبت میشوند → اتصال مجدد → کلاینت میگوید آخرین پیام من 150 است → سرور 151 تا 160 را میفرستد
نکته مهم اینه که پیامها نباید فقط داخل WebSocket نگه داشته بشن؛ چون با قطع اتصال ممکنه کاملاً از بین برن. برای سیستمهای حساس، معمولاً از دیتابیس یا message broker با امکان نگهداری پیام استفاده میکنند.
پس فرمول کلی:
ذخیره پیام روی سرور + ID ترتیبی + نگهداری آخرین ID سمت کلاینت + ارسال پیامهای از دسترفته بعد از reconnect.
هنوز پاسخی ثبت نشده
نظرها