در برنامهنویسی تحت وب، یکی از مهمترینبخشهاپیادهسازی ارتباطات سمت مشتری (Client) و سرور (Server) است. کتابخانههای زیادی وجود دارند که میتوانند در پیادهسازی این مرحله به برنامه نویسان کمک کنند و Socket IO یکی از این کتابخانههای کاربردی است. در این مطلب یاد میگیریم که Socket io چیست و کجا باید از آن استفاده کنیم.
ارتباط بین Client و Server چیست ؟
قبل از اینکه بررسی کنیم Socket io چیست بهتر است ارتباط بین Client و Server را در برنامهنویسی تحت وب بدانیم. بیایید ابتدا نام این کتابخانه را سادهسازی کنیم و بررسی کنیم که سوکت چیست. سوکتها (Socket) بهنوعی درگاه (Port) ارتباطی دنیای وب هستند و شروع و پایان یک ارتباط را در ارتباط Client - Server مشخص میکنند.
سوکتهامیتوانند جریانی از دادههای بایتی باشند که میتوان با نوشتن اطلاعاتی در آنها در یک سمت مثلاً سمت کلاینت، اطلاعات را به سوکتی در سمت دیگر ارسال کرد. سوکتدوم نیز توانایی نوشتن اطلاعات جدید و خواندن اطلاعات دریافتی را دارد.
پس سوکتها اجزای اصلی در برقراری یک ارتباط تحت وب هستند و در تمامی فرایند ارتباط Client - Server حضور دارند. وقتی شما مرورگر خود را بازکرده و اقدام به جستجو در گوگل و یا رفتن به یک سایت میکنید، درواقع در جایگاه متقاضی یا کلاینت قرار میگیرید که درخواستی را از سوکت خود به سمت دیگر ارسال کرده است.
این درخواست مستقیماًنمیتواندبهدست گوگل یا سایت موردنظر برسد بلکه رابطی به نام سرور باید این کار را انجام دهد. بنابراین درخواست شما ابتدا به سرور فرستادهشده، سپس سرور با ایجاد ارتباط با سایت مقصد داده لازم را از سوکت مقصد گرفته و به شما پاسخ میدهد. تمامی ارتباطات تحت وب اینگونه برقرار میشوند و برنامه نویسان برای پیادهسازی این ارتباط، از کتابخانههایی مانند Socket io استفاده میکنند.
Web Socket چیست ؟
Web Socket پروتکلی است که در کنار پروتکلهای HTTP برقراری ارتباط دوطرفه (Bidirectional ) و به هنگام (Real-Time) بین سرور و کلاینت را ممکن میکند. ارتباط دوطرفه به این معنی است امکان برقراری ارتباط هم از سمت کلاینت و هم از سمت سرور پشتیبانی و کنترل میشود.
ارتباط به هنگام نیز اینگونه تعریف میشود که درخواست کاربر در همان بازه زمانی که اقدام کرده پاسخ داده میشود. اهمیت این پروتکل در این است که تلاش میکند در بازههایی که اطلاعات دریافت و ارسال نمیشود نیز، ارتباط را برای مدتی برقرار نگهداشته و ارتباط دوطرفه را ممکن میسازد.
در سالهای گذشته ارتباطات تحت وب یکطرفه بود. به این صورت که ابتدا کلاینت درخواستی را ثبت میکرد و سپس سرور سعی میکرد به آن پاسخ دهد. اما ارتباط ایده آل ازنظر برنامه نویسان، ارتباطی بود که سرور همواره منتظر کلاینت نماند و خود نیز بتواند مستقلانه درخواستی را ارسال کند.
ایدههای اولیه به این صورت بود که با حفظ ارتباط پس از پاسخدهی به کلاینت، این امکان فراهم شود که سرور بتواند دادههای خود را ارسال کند. مشکل این نوع ارتباط افزایش حجم سربار دادهها و تأخیر در ارسال و دریافت بود. برقراری ارتباطی پایدار، دوطرفه و با کمترین تأخیر و سربار دادهها را Web Socket ها ممکن ساختند. پروتکلی که کتابخانه Socket io از آن استفاده میکند.
Socket io چیست ؟
Socket io یکی از کتابخانههای جاوا اسکریپت است و همانطور که در بالا اشاره شد، به کمک وب سوکت ارتباطات دوطرفه (Bidirectional ) و به هنگام (Real-Time) را فراهم میکند. این کتابخانه برای هر پلتفرم و مرورگری سریع و قابلاعتماد عمل کرده و ارتباط بین کلاینت و سرور را به خوبی برقرار میکند.
این کتابخانه 2 بخش دارد که شامل یک کتابخانه سمت سرور برای Node JS و یک کتابخانه سمت مشتری برای مرورگر است. البته این کتابخانه بخشی به نام Engine.io دارد که مدیریت ارتباطات دوطرفه را با استفاده از پروتکل Web Socket انجام میدهد.
Socket.IO خود نیز پیگیری قطع و وصل ارتباطات، مدیریت رویدادهای ارسالشده و کنترل پیامها را به عهده دارد. فریم ورک Express JS یکی از فریم ورکهایی است که برای ایجاد وب سرور و کار کردن با کتابخانه Socket.IO استفاده میشود.
ویژگی های Socket io چیست ؟
این کتابخانه ویژگیهای قابل توجهی دارد مانند:
قابل اعتماد بودن (Reliability) : این کتابخانه برقراری ارتباط، در شرایطی که پراکسی، آنتی ویروس و یا فایروالها فعال باشند را نیز امکان پذیر میسازد.
ردیابی قطع ارتباط (Disconnection Detection) : مکانیسمی برای هر دو سمت در نظر گرفته شده تا مشخص شود در چه زمانی کلاینت و یا سرور پاسخگو نیستند.
ویرایش اسناد (Document Collaboration) : امکان ایجاد تغییر در اسناد (Document) توسط کاربران و هماهنگی با سایر تغییراتی که دیگران ایجاد کردهاند.
جریان داده بایتی (Binary Streaming) : ارسال دادهها به شکل بایت امکان فرستادن انواع مختلفی از دادهها مانند صوت و ویدئو را نیز فراهم میکند.
جمعبندی:
Socket io ساخت بسیاری از اپلیکیشن های کاربردی و مهم را برای ما فراهم کرده است و تکنولوژی بسیار مهمی در توسعه برنامههای تحت وب محسوب میشود. جاوا اسکریپت یکی از مهمترینزبانها در طراحی وب محسوب میشود و در این مورد هم، با معرفی چنین کتابخانهایبرنامهنویسی وب را چند گام به جلو برده است. این زبان دوستداشتنی همواره درحالتوسعه است و یادگیری آن برای افرادی که علاقهمند به فعالیت در حوزهبرنامهنویسی وب هستند ضروری به نظر میرسد. اگر در مورد این مقاله سوال یا نظری داشتید خوشحال میشویم که با ما و کاربران سون لرن به اشتراک بگذارید.
اگر به یادگیری بیشتر در زمینه جاوا اسکریپت علاقه داری، با شرکت در دوره آموزش جاوا اسکریپت در کمتر از یک سال به یک متخصص JS همه فن حریف تبدیل میشوی که آمادهی استخدام، دریافت پروژه و یا فول-استک شدن هستی.