PDA

View Full Version : چت بین چند کلاینت



monobit
پنج شنبه 12 شهریور 1394, 18:29 عصر
با سلام
من میخوام یه برنامه بسازم (با اندروید استودیو) که یه تعداد کاربر توش ثبت نام میکنن و اطلاعاتشون تو دیتابیس داخل سرورم ذخیره میشه و قراره بتونن هرکدوم داخل یک Activity چت روم پیام یا به عبارتید پست متنی فقط متن بذارن و تا حدودی این کار رو انجام دادم اما به یک مشکل بر خوردم.
فرض کنید 10 کاربر داشته باشیم و همزمان 5 نفر از این 10 نفر در حال نوشتن پیام باشند؛ حالا این موضوع پیش میاد :
بر فرض من آقای x الان پیاممو نوشتم و ارسال کردم و باید این پیام توسط همه ی افراد آنلاین نمایش داده بشه و در نهایت همه بتونن ببیننش.
حالا میخوام بدون اینکه نیاز باشه هر چند ثانیه یه بار هر کلاینت مجبور باشه لیست پیام هاشو رفرش کنه و اطلاعات از دیتابیس گرفته بشن هر پیام جدیدی اومد خود به خود رفرش بشه پیام های داخل لیست ویو.
ممنون میشم در این زمینه راهنماییم کنید.

suraty
پنج شنبه 12 شهریور 1394, 19:49 عصر
سلام،
چطوره از Thread و Handler استفاده کنید؟

pbm_soy
پنج شنبه 12 شهریور 1394, 21:49 عصر
بحث ترد و هندلر ربطی به این قضیه ندارد هرچند که برای نوشتن چنین برنامه هایی این ابزارها کاربر دارند!

سوال شما چندین بار به شکلهای مختلف قبلا در این سایت مطرح شده است!
در کل برای اینکه کاربران بدون رفرش از وجود پیامهای جدید مطلع شوند روشهای زیر وجود دارند
* استفاده از سوکت پراگرامینگ که درصورت برقرار کردن یک کانکشن با سرور چت کلاینت با سوکت یاهمان کانکشن را بازنگه دارد اگر نمیخواید کانکشن را بازنگه دارید سرور میتواند به کلاینت کانکشن ایجاد کند که دراینصورت کلاینت باید آی پی آدرس ولید داشته باشد و یا اینکه از الگوریتمهای مختلفی که بدون آی پی ولید برای کانکشن زدن استفاده میکنند استفاده کنید مانند upnp , stun در کل الگوریتمهای nat traversal استفاده کنید

* بجای سوکت نویسی سطح پایین میتوانید از سوکت نویسی در سطح وب استفاده کنید مانند. Web socket ویا web rtc که ابزارهای زیادی برای این تکنولژیها وجوددارند مانند node.js ,و غیره

* یا اینکه سرور از push notification استفاده کند برای اعلام پیام جدید داشتن کاربر دراین روش کاربر هروقت پیام push notification را دریافت کرد عمل رفرش کردن و یا همان درخواست پیامها را به سرور بفرستد

monobit
جمعه 13 شهریور 1394, 11:31 صبح
* یا اینکه سرور از push notification استفاده کند برای اعلام پیام جدید داشتن کاربر دراین روش کاربر هروقت پیام push notification را دریافت کرد عمل رفرش کردن و یا همان درخواست پیامها را به سرور بفرستد

بسیار سپاسگزارم از راهنماییتون.
من میخوام از این روش استفاده کنم و نمونه میخوام ممنون میشم کمک کنید.
و از طرفی میخواستم بدونم کلا روش ارتباطی سوکت چجوریه و پیاده سازیش مهمه برام و این کار نیاز به رابط هایی مثل php و ... و دیتابیس Mysql , host , ... برای ذخیره چت داره یا نه؟
مثه وب سرویسه یا متفاوته؟
و مهم برای من اینه کخ چطوری پیاده سازیش کنم؟!!!؟!!!؟!!!؟!!!؟!!!
باز هم ممنونم از راهنمایی های شما دوست عزیز

pbm_soy
سه شنبه 17 شهریور 1394, 01:07 صبح
سوکت پورگرامینگ نیازی به رابط و واسط ندارد
کلا متفاوت از وب سرویس است و تقریبا تمام برنامه های تحت شبکه که میبینید با این روش پیاده سازی شده اند مانند web browser و وب سرورها و ایمیل سرورها و ftp server , ftp client و غیره

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

مطالعه کنید اگر سوالی داشتید اینجا مطرح کنید