Socket.IO چیست ؟ شروع کار با آن
بلاگ آکادمی لرن فایلز
طرح تخفیف «به افتخار کوروش بزرگ» فعال شد با ۷۵و۸۵ درصد تخفیف-۴۸ساعته
دریافتSocket.IO چیست ؟ شروع کار با آن
بلاگ آکادمی لرن فایلز
Socket.IO در واقع یکی از کتابخانه های جاوا اسکریپت است که یک ارتباط دو طرفه (رفت و برگشتی) بین کلاینت و سرور برقرار می کند و از دو قسمت تشکیل می شود! کتابخانه سمت کلاینت که در مرورگر اجرا شده و دیگری ، کتابخانه سمت سرور بر پایه Node.js است که دارای یک API برای ارتباط با یکدیگر هستند.
ارائه فید بک های به موقع در وب اپلیکیشن های شما اهمیت زیادی دارد. همه چیز با معرفی XMLHttpRequest توسط مایکروسافت شروع شد و بعد به چیزی تبدیل شد که با نام Ajax می شناسیمش! سرویس long-poll در Socket.IO استاندارد ترین روش جهت تحویل داده های سرور برای برنامه می باشد ، اما بهترین راه حل نیست! این روش شامل فرستادن درخواست های HTTP برای داده است که باعث بار اضافی برای سرور و تاخیر در سرعت کار آن می شود.
IETF سرویس WebSocket را در سال ۲۰۱۱ استاندارد نمود و روشی برای برنامه نویسان در تحویل و ارسال داده از طریق TCP ارائه کرد. تمامی مرور گر های اصلی، پشتیبانی خود را از این استاندارد اعلام کرده و توسه دهنده ها نیز آن را در برنامه هایشان استفاده کردند.
Sokcet.IO لایه ای دو طرفه با محوریت رخداد(Event) می باشد که برای وب اپلیکیشن های بالاتر از Engine.IO ساخته شده است. این لایه تمامی سرویس های Polling در Ajax و Websocket را در یک API قرار داده است که به برنامه نویسان اجازه می دهد تا بدون نگرانی از مطابقت با مرور گر ، داده های خود را ارسال و دریافت کنند.
Socket.IO در ۸ ماه May سال ۲۰۱۴ نسخه ی ۱.۰ خود را ارائه نمود. این پروژه شامل دو بخش قبل از ورژن ۱.۰ بود. یکی پیاده سازی انتقال و دیگری API های سطح بالا. بخش اول به پروژه ای دیگر منتقل شده است که Engine.io نام دارد که به برنامه نویس اجازه می دهد تا API هایی جدید برای برنامه های تحت وب بدون ایجاد چرخه ای جدید بسازد.
به غیر از تغییرات ساختاری و معماری ، Socket.IO تغییرات زیادی در نمای کاربری دارد.
پشتیبانی از استریم کردن باینری
پشتیبانی بهتر برای مقیاس بندی افقی
حذف پیام های خطایابی متعدد در کنسول به شکل پیش فرض
پشتیبانی JS از طریق ماژول Socket.io-stream
در این مقاله نگاهی سریع به این که چگونه می توان برای ارسال و تحویل داده در زمان اجرا از Socket.io استفاده نمود خواهیم انداخت!
Socket.IO هم بخش های سروری و هم بخش های کلاینتی دارد که API های مشابهی دارند.
در سمت سرور ، Socket.IO با اضافه نمودن Event Listener ها به http.Server کار می کند. Sokcet .io از نمونه http.server پشتیبانی می کند! می توانید بنویسید :
با این انعطاف پذیری بالا , می توان به راحتی یک سرور Sockcet.IO را به سایر چارچوب های HTTP متصل نمود. برای مثال می توان از دستور زیر برای استفاده از Socket.IO بهره برد:
حتی می توان از Socket.IO در Hapi استفاده نمود:
Socket.IO با چارچوب هایی که فرمان http.Server خود را نشان دهند همخوانی خواهد داشت و قابل اجرا است. جهت اطمینان به مستندات مراجعه کنید.
سرور Http در کتابخانه ی /Socket.io/socket.io.js شروع به سرویس دهی به کلاینت می کند. برای اتصال به سرور Socket.IO ما باید دو خط زیر را در تگ body قرار دهیم:
متغیر سراسری Socket یک شئ EventEmitter است. می توانیم یک Listener را وقتی به سرور متصل شدیم به شکل زیر به Attach کنیم:
از آن جایی که هم Socket سرور و هم Socket کلاینت به شکل EventEmitter فعالیت می کنند می توانید رخداد ها را به صورت دو طرفه ایجاد و یا به آن ها گوش دهید (Listen). برای مثال یک “tweet” در سرورقرار دهید و آن را در سمت کلاینت دریافت کنید:
برای استفاده داده ها در مرورگر باید رخداد “tweet” را دریافت کنیم :
می توانیم هر نوع شئ Json را به سرور ارسال و از آن دریافت کنیم. این ها شامل اعداد و String ها، آرایه ها و بولین ها (Boolean Variable) می شوند. حتی می توان Node.JS را در Socket.io 1.0 ارسال و دریافت نمود.
پیشنهاد دوره : چنانچه تمایل دارید Node.JS را بیاموزید، می توانید دوره ویدیویی آن را از اینجا دریافت کنید!
اگر بخواهیم “tweet” هایی را از مرور گر به سرور ارسال کنیم و آن ها را در سرور استفاده نماییم، باید بدین شکل عمل کنیم:
در کدهای سمت کلاینت، ما می توانیم “tweet” ها را به شکل زیر به سرور ارسال کنیم:
همانطور که می بینید، سرور و کلاینت دارای رفتاری مشابه در Socket.IO هستند.
علاوه بر ارسال شی JSON می توان یک سری استریم خواندنی (Readable Stream) برای مرورگر از سرور ارسال کرد. اگر بخواهیم محتوای اسکریپت سمت سرور را بفرستیم باید به شکل زیر عمل کنیم:
برای استفاده هر بخش از داده ها در مرورگر، ما می توانیم گوش کنیم به رخداد “data” در شئ ای که نتیجه داخل آن است :
Socket.IO نقش مهمی در استفاده از NODE.JS دارد که Websocket ها را محبوب تر و در دسترس تر می کند. نسخه ی ۱.۰ قدمی مهم در تکامل و توسعه ی Engine.IO بود و باعث شد تا امکانات جالبی در زمینه ی Engine.IO برای برنامه نویس ها ایجاد شود. ما فقط بخشی از ویژگی های Socket.IO را در این مقاله مورد بررسی قرار دادیم و به صورت مختصر با کدنویسی آن آشنا شدیم! توصیه می کنیم دوستان علاقه مند، Socket.IO را در دستور کار یادگیری خود قرار دهند و در کنار آموزش های لرن فایلز در این زمینه، از مرجع زیر بهره مند شوند :
یادگیری Socket با مستندات سایت Socket.IO (لطفاً با فیلتر شکن اقدام کنید!)