اینم یه تجربه پراکنده دیگه!
من توی یکی از کارهایی که انجام میدادم نیاز پیدا کردم که تقریبا به صورت آنی به کلاینت خبر بدم که یه اتفاق افتاده و کلاینت به اون اتفاق پاسخ مناسب بده. با توجه به این نیاز و دونستن اینکه نرمافزارهای موبایل عملا به راحتی اتفاقات سمت سرور رو به کلاینت خبر میدن رفتم سراغ اینکه بدونم اونها چطور کار میکنن.
خب اول از همه ویندوز، iOS و آندروید هر سه در سطح سیستم عامل این عملیات رو پشتیبانی میکنن. بدین صورت که اگه شما بخوای اطلاعاتی رو به موبایل push کنی بایستی تقریبا مراحل زیر رو طی کنی:
- نرم افزاری رو که میخوای براش اطلاعات بفرستی به فراهم کننده این سرویس معرفی کنی و ازش یه شبه اکانت بگیری
- توی نرم افزار موبایل کارها مرتبط با پیدا سازی این سرویس رو انجام بدی
- از سمت سرور به سرورهای فراهم کننده وصل بشی و بدونی چه کلاینت هایی داری و به اون کلاینتها اطلاعات رو push کنی.
خب دونستن این اطلاعات خیلی به من برای رسیدن به هدفم کمک نمیکرد. پس رفتم سراغ یه جای دیگه. ما راهحلهایی داریم به اسم Backend as a Service که اونها اداعا میکنن که سرور push notification دارن. بعد از بررسی و خوندن مستندات و یکم دست و پنجه نرم کردن با این راهحلها فهمیدم که کارکردن و سرو کله زدن سرورهای فراهم کننده خیلی راحت و تو دل برو نیست و برای پیاده سازی باید کلی نحوه ارسال این اطلاعات مدیریت بشه. سرور push notification توی این راهحلها سعی میکردن این مدیریت رو انجام بدن. این اطلاعات هم خوب بود اما خیلی به درد نمیخورد.
پس یه قدم به جلو رفتم که بدونم زیر این سیستمها از چی استفاده میشه. پس یکم بررسی پیدا کردم(از اینجا، اینجا، اینجا و اینجا) که اپل و گوگل و خدا بیامرز نوکیا از پروتکل xmpp برای ارتباط کلاینتها و سرورهاشون استفاده میکنن. این سرنخ خوبی بود. این نشون میداد که کل سیستم براساس یه نوع چت خاص کار میکنه. یعنی همه کلاینتهای متصل به اینترنت آنلاین هستن و با سرور اتصال دارن. حالا سرور با رسیدن یه پیغام، اون رو برای موبایل یا موبایلها میفرسته.
خب همین سرنخ کافی بود تا من برم و بیشتر بررسی کنم ببینم تکنولوژیهای چت چی هستن و چطور میشه ازشون استفاده کرد. پروتکلهای متفاوتی رو توی اینجا پیدا کردم. اما اکثرا یا ویژگیهایی داشتن که من نمیخواستم( مثلا ارسال صدا، تصویر و …) یا اینکه خیلی معمول نبودن یا مقبولیت عام نداشتن. پس از بررسی اولیه به نظرم استفاده از یکی از این دوتا پروتکل میتونه برامون push notification به همراه داشته باشه
فعلا همین!
پ.ن. این پست یه قسمت دیگه هم خواهد داشت که از منظر پیادهسازی به این موضوع نگاه میکنه.