سلام به همه
این چیزی که می خوام براتون توضیح بدم graphql Client تو react native ه
حدود یه سالیه دارم با graphql دسته و پنجه نرم می کنم
چهار تا تابع داره که کار با همشون یکم سختی خودش رو داره
اول بذارین یه نگاه کلی به graph بنداریم
گرافکیوال (GraphQL) یک زبان پرسمان به طور داخلی توسعهداده شده توسط فیسبوک در ۲۰۱۲ پیش از انتشار عمومی در ۲۰۱۵ است که یک جایگزین به معماریهای REST و خدمات وب تککاره ارائه میدهد و اجازه میدهد که کلاینت ها ساختار دادهٔ موردنیاز را تعریف کنند و ساختار دقیقاً مشابه توسط کارساز بازگردانی میشود. ساختار زمان اجرای آن سختگیر در نوع است که اجازه میدهد کلاینت ها مشخص کنند که چه دادهای مورد نیاز است. این ساختار از مشکلات واکشی بیشتر و همچنین واکشی کمتر دادهها جلوگیری میکند. گرفکیوال در زبانهای مختلفی پیادهسازی شده است، از جمله جاوااسکریپت، پایتون، روبی، جاوا، سیشارپ، اسکالا، گو، الیکسر، ارلنگ، پیاچپی، و کلوژر.(کپی از ویکی پدیا)
mutation: این تابع برای ارسال دیتا استفاده میشه و تقریبا کار POST رو تو REST انجام میده
query: تابعی هست که برای گرفتن دیتا استفاده میشه و کار get رو انجام میده
این دو تا معمولا تابع پرکاربرد graph هستن
چیزی که می خوام بگم از subscription هست
بذارین اول بگیم این غول بی شاخ و دم چی هست اصلا...
این بزرگوار یه بخش از همین graphql هست که بهتون قابلیت real time میده
کسایی که سوکت کار کردن می دونن real time چیه و یعنی شما بخواین یه داده رو مثلا بدون refresh صفحه وب یا reload کردن یه اپ بتونین دریافت کنین یا همون سیستمی که تو پیام رسان ها استفاده می کنن که subscription هم این قابلیت رو دقیقا بهتون میده
بذارین بهتون داستان مشکلم بگم؛
تو یه پروژه ای ما باید سیستم پیام رسان درست می کردیم..
رسیدیم به این موضوع که دو بخش باید پیام ها دریافت می شد و دو تا صفحه جدا بود یکی صفحه پیام ها که لیست تمام کسایی بود که پیام ارسال می کردن یه صفحه هم نمایش پیام ها بود
ما برای این که لیست اشخاص رو داشته باشیم اومده بودیم pulling میزدیم رو لیست پیام ها به جای اینکه real time کنیم و من با این موضوع اصلا نتونستم کنار بیام در صورتی که که پروژه تموم شده بود و تحویل داده بودیمش رفتم دنبال راه حل تا این که به یه package آشنا شدم
از اونجایی که من چند سالی C# کار می کردم و با event و delegate آشنا بودم گفتم حتما تو javascript هم باید چنین چیزی وجو داشته باشه یا اگرم نبود باید پیادش کنم اما تو جستجو هام پیداش کردم
اسمش eventEmitter ه
این package به این شکل عمل می کنه که شما یه fetch یا function تو یه صفحه دیگه دارین و می خواین بدون اینکه تو یه صفحه دیگه تعریفش کنین اطلاعاتش رو بگیرین بهتون کمک می کنه
حالا چطور تو subscription تعریفش کنیم
شما در subscription، event های مختلف دارین مثل:
onConnected
onConnecting
و ...
اما event اصلیش از تابع subscribe میاد که بعدش next میاد و خروجی بهتون میده
حالا چطور استفاده کنیم
فراخونی می کنین
داده رو ارسال می کنین
و به این شکل دریافت می کنین
همین
امیدوارم خوشتون بیاد...