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