در برنامهنویسی تحت وب، یکی از مهمترین بخشها پیادهسازی ارتباطات سمت مشتری (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) را فراهم میکند. این کتابخانه برای هر پلتفرم و مرورگری سریع و قابلاعتماد عمل کرده و ارتباط بین کلاینت و سرور را به خوبی برقرار میکند.
این کتابخانه ۲ بخش دارد که شامل یک کتابخانه سمت سرور برای Node JS و یک کتابخانه سمت مشتری برای مرورگر است. البته این کتابخانه بخشی به نام Engine.io دارد که مدیریت ارتباطات دو طرفه را با استفاده از پروتکل Web Socket انجام میدهد.
Socket.IO خود نیز پیگیری قطع و وصل ارتباطات، مدیریت رویدادهای ارسالشده و کنترل پیامها را به عهده دارد. فریم ورک Express JS یکی از فریم ورکهایی است که برای ایجاد وب سرور و کار کردن با کتابخانه Socket.IO استفاده میشود.
ویژگی های Socket io چیست ؟
این کتابخانه ویژگیهای قابل توجهی دارد مانند:
- قابل اعتماد بودن (Reliability) : این کتابخانه برقراری ارتباط، در شرایطی که پراکسی، آنتی ویروس و یا فایروالها فعال باشند را نیز امکان پذیر میسازد.
- ردیابی قطع ارتباط (Disconnection Detection) : مکانیسمی برای هر دو سمت در نظر گرفته شده تا مشخص شود در چه زمانی کلاینت و یا سرور پاسخگو نیستند.
- ویرایش اسناد (Document Collaboration) : امکان ایجاد تغییر در اسناد (Document) توسط کاربران و هماهنگی با سایر تغییراتی که دیگران ایجاد کردهاند.
- جریان داده بایتی (Binary Streaming) : ارسال دادهها به شکل بایت امکان فرستادن انواع مختلفی از دادهها مانند صوت و ویدئو را نیز فراهم میکند.
جمعبندی:
Socket io ساخت بسیاری از اپلیکیشن های کاربردی و مهم را برای ما فراهم کرده است و تکنولوژی بسیار مهمی در توسعه برنامههای تحت وب محسوب میشود. جاوا اسکریپت یکی از مهمترین زبانها در طراحی وب محسوب میشود و در این مورد هم، با معرفی چنین کتابخانهای برنامهنویسی وب را چند گام به جلو برده است. این زبان دوستداشتنی همواره درحالتوسعه است