# زبان های اسکریپتی > JavaScript و Framework های مبتنی بر آن > Node.js >  نحوه تشخیص بسته بودن سوکت

## omid_student

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

----------


## plague

وقتی قطعه گوشی قطعه ارروری تولید میشه یا نه ؟ 
اگه تولید میکنه try/catch استفاده کن برای نوشتن 
یا گه جواب میده رویداد on error بنویس برا  سوکتت 

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

----------


## omid_student

> وقتی قطعه گوشی قطعه ارروری تولید میشه یا نه ؟ 
> اگه تولید میکنه try/catch استفاده کن برای نوشتن 
> یا گه جواب میده رویداد on error بنویس برا  سوکتت 
> 
> اگرم اررور نمیده در صورت قطع شدن کال بک رو چک کن یا خروجی .write 
> https://nodejs.org/api/net.html#net_...oding_callback


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

----------


## plague

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

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

----------


## behi1ty

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


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

----------


## cybercoder

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

----------


## omid_student

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


ممنون از راهنماییت دوست

----------

