Skip to content

alirezaei1380/chat-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

سلام چون تعداد تابع های من کمه و هر تابع طولانیه هر تابع رو یکم بیشتر توضیح میدم
همچنین متغیر های مهم رو گلوبال تعریف کردم واسه همین ورودی و خروجی همه تابع ها خالیه
کلاینت
یه تابع برای ساخت توکن و اتصال به سرور دارم که کپی کردم و توضیح زیادی احتیاج نداره
برای هر منو هم یه تابع دارم
تو هر منو یه حلقه دارم که اگه لازم باشه از حلقه خارج میشه
سه تا متغیر برای حلقه های منو ها دارم و یه رشته برای توکن
توی هر بخشی که نام کاربر یا رمز کاربر یا نام کانال یا یک کلمه(برای جستجوی پیام) ابتدا چک میشه که در ورودی فاصله هست یا نه و اگه وجود داشت خطای مناسب چاپ میشه و حلقه از اول اجرا میشه
منوی اول
برای ساخت اکانت کد کلاینت صرفا ساختار مناسب این دستور رو به سرور ارسال میکنه و جواب رو میگیره و پارس میکنه
برای ورود به اکانت هم دوباره ساختار مناسب دستور رو به سرور ارسال میکنه و جواب رو میگیره و پارس میکنه اگه مشکلی نبود وارد منوی دوم میشه و توکن دریافتی رو ذخیره میکنه اما اگه مشکلی بود تو همین منو میمونه و مشکل رو چاپ میکنه
گزینه خروج هم احتیاج به توضیح نداره و صرفا برنامه رو میبنده
منوی دوم
برای ساخت و ورود به کانال کد کلاینت ساختار مناسب رو ارسال میکنه و جواب سرور رو پارس میکنه و اگه مشکلی نبود وارد منوی سوم میشه و اگه مشکلی بود تو حلقه میمونه و ارور رو چاپ میکنه
برای خروج از اکانت هم ساختار مناسب رو ارسال میکنه و جواب رو پارس میکنه و وارد منوی اول میشه
منوی سوم
برای ارسال پیام صرفا ساختار مناسب رو ارسال میکنه و جواب رو پارس میکنه
برای رفرش هم ساختار مناسب رو ارسال و جواب رو پارس میکنه و برای چاپ پیام تو یه حلقه یکی یکی پیام رو ازجیسون به رشته تبدیل میکنه و چاپ میکنه
برای اعضای کانال هم همه چیز مشابه رفرش هست و احتیاجی به توضیح جدا نداره
برای جستجوی کاربر دوباره ساختار مناسب ارسال و جواب سرور پارس و چاپ میشه
برای جستجوی پیام متاسفانه به دلیل اینکه چند تا از تابع های جیسون روی سرور رفتار متفاوتی نسبت به کلاینت داشتن مجبور شدم اصل کار رو روی کلاینت بدم یعنی سرور کل پیام های کانال رو ارسال میکنه و کلاینت پیام هایی که کلمه سرچ شده توش هست رو چاپ میکنه
برای خروج از کانال هم ساختار مناسب ارسال و جواب پارس میشه و وارد منوی دوم میشه
سرور
چهار ارایه گلویال تعریف کردم که برای ذخیره توکن و نام و کانال و تعداد پیام های دیده شده کاربر ها استفاده میشه همچنین یه متغیر گلوبال هم برای شمردن تعداد کاربر ها استفاده کردم
مثل کلاینت یه تابع برای ساخت توکن و اتصال به کلاینت دارم که کپی کردم
برای هر دستور هم یه تابع تعریف کردم 
تو تابع اصلی یه حلقه بینهایت دارم که هر بار یه درخواست رو میگیره و تابع مناسب اون دستور رو صدا میکنه
تابع رجیستر اول چک میکنه که فایل کاربر وجود داره یا نه اگه وجود داشت یعنی این کاربر قبلا ساخته شده و خطای مناسب ارسال میشه در غیر این صورت فایل کاربر ساخته میشه و یک جواب موفقیت امیز برای کلاینت ارسال میشه
تابع ورود کاربر اول چک میکنه کاربر وجود داره یا نه اگه وجود نداشت خطای مناسب رو ارسال میکنه بعد رمز رو چک میکنه که اگه غلط بود خطای مناسب ارسال میشه اگر هم همه چیز اکی بود یه توکن 32 تایی برای کلاینت ارسال میکنه(همچنین توکن و نام کاربر ذخیره میشه)(توکن به صورت دستی ساخته میشه)
از اینجا به بعد همه تابع ها داخل یه حلقه توکن دریافتی رو با لیست توکن ها مقایسه میکنن تا بفهمن کدوم کاربر درخواست فرستاده و اگه با هیچ توکنی همخونی نداشت خطای مناسب ارسال میشه
تابع ساخت کانال اول چک میکنه که ایا کانال از قبل وجود داره یا نه و اگه وجود داشت خطای مناسب رو ارسال میکنه اگر هم وجود نداشت یه فایل برای کانال میسازه و یه پیغام موفقیت‌آمیز برای کلاینت ارسال میکنه(همچنین نام کانال توی ارایه مناسب ذخیره میشه)
تابع عضویت در کانال دوباره چک میکنه که کانال وجود داره یا نه و اگه وجود نداشت خطای مناسب ارسال میشه و اگر وجود داشت جواب موفقیت امیز ارسال میشه(همچنین نام کانال توی ارایه مناسب ذخیره میشه)
تابع خروج کاربر هم صرفا توکن کاربر رو از ارایه پاک میکنه و یک پیغام موفقیت امیز ارسال میکنه
از اینجا به بعد همه تابع ها چک میکنن که ایا کاربر عضو کانالی هست یا نه و اگر نبود خطای مناسب رو ارسال میکنن
تابع ارسال پیام کل فایل کانال رو داخل یه رشته میریزه و اونو پارس میکنه بعد پیام رو به لیست پیام های کانال اطافه میکنه سپس جیسون جدید(اپدیت شده) رو روی فایل کانال بازنویسی میکنه و پیغام موفقیت امیز رو ارسال میکنه
تابع رفرش دوباره کل اطلاعات فایل کانال رو داخل یه رشته میریزه و پارس میکنه سپس از جایی که کاربرپیام ها رو ندیده به بعد رو ارسال میکنه و ذخیره میکنه که کاربر تا اینجا(اخرین پیام ارسالی) رو دیده
تابع لیست اعضا داخل یه حلقه همه کاربر های انلاین رو بررسی میکنه و اسم اونهایی که عضو کانال یکسان با کاربری که درخواست رو ارسال کرده بودند رو داخل یه ارایه ذخیره میکنه و برای کلاینت ارسال میکنه
تابع جستجوی کاربر مانند تابع رفرش کاربر ها رو چک میکنه و اگه کاربری با نام ارسال شده توسط کاربر عضو کانال بود به کلاینت ارسال میکنه که کاربر مورد نظر پیدا شد و اگر کاربری با این نام عضو نبود ارسال میکنه کاربر مورد پیدا نشد همچنین اگر کاربر اسم خود را سرچ کند پیغام مناسب ارسال میشود
تابع جستجوی پیام همونطور که قبلا گفتم صرفا تمام پیام های کانال رو از ابتدا ارسال میکنه و کد کلاینت دنبال پیام مورد نظر میگرده
تابع خروج از کانال هم صرفا نام کانال فعلی کاربر رو خالی میکنه و پیغام موفقیت امیز رو ارسال میکنه 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages