PDA

View Full Version : نحوه تشخیص بسته بودن سوکت



omid_student
سه شنبه 16 خرداد 1396, 16:17 عصر
سلام دوستان
من هر گوشی رو که به سوکت وصل میشه رو توی ارایه با کدی که میفرستم ذخیره میکنم
در واقع اون کلید کدی هست که میفرستم و توی ارایه ذخیره میشه
بعد اگه بخوام به دیوایسی پیام بفرستم میام کدش رو میگیرم و بعد از ارایه برمیدارم و به اون سوکت ی که میخوام اطلاعات میفرستم
ولی بعضی مواقع گوشی قطع میشه و سوکت دیگه ارتباطی نداره
حالا میخوام این وسط وقتی دیتا رو میفرستم با socket.write میخوام بدونم ایا خطا میده که وصله یا نه که به اون ور پیام بفرستم که سوکت وصل نیست

plague
سه شنبه 16 خرداد 1396, 16:40 عصر
وقتی قطعه گوشی قطعه ارروری تولید میشه یا نه ؟
اگه تولید میکنه try/catch استفاده کن برای نوشتن
یا گه جواب میده رویداد on error بنویس برا سوکتت

اگرم اررور نمیده در صورت قطع شدن کال بک رو چک کن یا خروجی .write
https://nodejs.org/api/net.html#net_socket_write_data_encoding_callback

omid_student
چهارشنبه 17 خرداد 1396, 10:31 صبح
وقتی قطعه گوشی قطعه ارروری تولید میشه یا نه ؟
اگه تولید میکنه try/catch استفاده کن برای نوشتن
یا گه جواب میده رویداد on error بنویس برا سوکتت

اگرم اررور نمیده در صورت قطع شدن کال بک رو چک کن یا خروجی .write
https://nodejs.org/api/net.html#net_socket_write_data_encoding_callback

ببین چون دارم هر سوکت رو با ای دی که توسط گوشی دریافت میشه رو توی ارایه ذخیره میکنم برا همین وقتی خطا نمیده نمیتونم تشخیص بدم که کدوم سوکت بودکه پاسخ رو بهش برگردونم
یا بگم کدوم سوکت بوده خطا داده
ببین کار به این شکله که هر گوشی توی سوکت عضو میشن و ثبت میشن با کدی که ارسال میکنن
بعد مثلا فلان گوشی میخواد به فلان گوشی پیام بده یه پیام توی سوکت به سرور میده و سرور هم به ای دی که فلان گوشی خواسته پیام میده
حالا اگه خطا بده و خطا بده نمیدونم کدوم ای دی بوده که مشکل داشته چون توی رویداد error هستش

plague
چهارشنبه 17 خرداد 1396, 16:58 عصر
من مدت زیادیه کار نکردم و خاطرم نیست دقیق
ولی تا حالا پارامتری که به تابع اررور پاس داده میشه رو کنسول لاگ کردی ببینی چی توشه؟
چون فکر میکنم توی اون مشخص بشه که مشکل از کدوم آیدی هستش

یه راه حل دیگه اینکه
یه متغیر گلوبال تعریف کن خارج رویداد ها
قبل از هر ارسال پیام آیدی یا هرچی داری رو بریز توش
توی رویداد اررور از اون بخون که کی بوده

behi1ty
یک شنبه 29 بهمن 1396, 14:43 عصر
سلام دوستان
من هر گوشی رو که به سوکت وصل میشه رو توی ارایه با کدی که میفرستم ذخیره میکنم
در واقع اون کلید کدی هست که میفرستم و توی ارایه ذخیره میشه
بعد اگه بخوام به دیوایسی پیام بفرستم میام کدش رو میگیرم و بعد از ارایه برمیدارم و به اون سوکت ی که میخوام اطلاعات میفرستم
ولی بعضی مواقع گوشی قطع میشه و سوکت دیگه ارتباطی نداره
حالا میخوام این وسط وقتی دیتا رو میفرستم با socket.write میخوام بدونم ایا خطا میده که وصله یا نه که به اون ور پیام بفرستم که سوکت وصل نیست

سلام، بهتره موقع disconnect شدن Id کاربر و از لیست آرایه پاک کنید، اینجوری مدیریت حافطه هم بهتره و اگر بخواین تعداد کاربرای آنلاین و هم به دست بیارید می تونید.

cybercoder
چهارشنبه 02 اسفند 1396, 02:04 صبح
از redis‌ استفاده کن و در هنگام disconnect شدن از redis‌ پاکش کن. این طوری می تونی ببینی کیا آنلاینن و اونایی که آنلاینن سشنشون شناسه سوکتشون چیه. ضمنا سمت کلاینت اگر app‌موبایل هست یا هر چیزی هست زمانی که سوکت دیسکانکت میشه یک timer بذار مثلا از ۱۰ تا ۱ بعد reconnect کن. اگر هم بست و رفت که هیچ. ترنسپورت سوکت رو هم Websocket استفاده کن. polling‌ باتری موبایل رو زود drawn‌ میکنه.

omid_student
چهارشنبه 02 اسفند 1396, 20:32 عصر
از redis‌ استفاده کن و در هنگام disconnect شدن از redis‌ پاکش کن. این طوری می تونی ببینی کیا آنلاینن و اونایی که آنلاینن سشنشون شناسه سوکتشون چیه. ضمنا سمت کلاینت اگر app‌موبایل هست یا هر چیزی هست زمانی که سوکت دیسکانکت میشه یک timer بذار مثلا از ۱۰ تا ۱ بعد reconnect کن. اگر هم بست و رفت که هیچ. ترنسپورت سوکت رو هم Websocket استفاده کن. polling‌ باتری موبایل رو زود drawn‌ میکنه.
ممنون از راهنماییت دوست