ارور connection interrupt در websocket

webbrowser

#1

سلام.
من دارم یه پروژه انجام میدم (این بخش مهم نیست ولی) با python و tornado که (این بخش مهمه) از websocket استفاده میکنم برای برقراری ارتباط با کلاینت.
مساله اینه که هر چند دقیقه یک بار توی کنسول بروزر (فایرفاکس روی لینوکس و کروم روی ویندوز، هردو آخرین ورژن) با این ارور مواجه میشم.

The connection to ws://localhost/socket was interrupted while the page was loading.

و این پیغام هنگام لود صفحه نیست. وقتیه که چندتا پیام ارسال و دریافت شده و مثلا ۵ ثانیه بیکار بوده.
توی سرچها به ردپایی از @lxsameer رسیدم که ۴سال پیش با یه ورژن قدیمی firefox همچین مشکلی رو داشت.
و وقتی صفحه رو refresh میکنم، توی لاگ سرور میبینم که ۲تا کلاینت وصل هستن. یعنی سرور خودش نفهمیده که کانکشن قبلی close شده و مثلا فکر میکنه من یه tab جدید باز کردم.

آیا راهی برای حل این مشکل هست؟
اصلا چی میشه که این اتفاق میفته؟


#2

این مشکل رو یادم میاد تا حدودی. اگر یادم باشه به جایی رسیدیم که سورس رو شروع کردیم خوندن و متوجه شدیم که فایرفاکس یه روند عجیب برای مدیریت websocket داره که باعث می شه کانکشن اون موقعی که شما فکر می کنی بسته شده بسته نشه و از طرف دیگه هم بعد از یه مدت idle بودن ببندتش و برای اتصال مجدد یه timeout ی رو در نظر می گیره که با هر بار failed شدن توی وصل شدن به سرور مقدار اون timeout بیشتر می شه. نکته جالب هم اینه که وقتی پیج رو refresh می کنین سعی کی می کنه کانکشن رو نگه داره که باعث می شه عموما دوتا کانکشن ببینین. اینا چیزایی بودن که یادم میومدن. :smile: