وب سوکت یا WebSocket چیست

وب سوکت یا WebSocket چیست

علی مرادی

خودتون رو در حال نوشتن ایمیل برای یکی از دوستاتون یا همکاراتون تصور کنید. شما همیشه با اسم دوستتون شروع می کنید ، و متن را ادامه می دید و در آخر هم اسم خودتون و می نویسید و تموم. حالا فکر کنید با دوستتون رو در رو بررخود کنید و حرف بزنید. آیا بازم از همون روش استفاده می کنید و رسمی برخورد می کنید؟ صد در صد نه ، درسته؟ این مثال عملاً خلاصه HTTP و WebSocket را نشون میده.

در ادامه با ما در شتابان هاست همراه باشید تا بطور کلی به این موضوع یپردازیم.

درک تخصصی WebSocket:

WebSocket یک پروتکل ارتباطی دو طرفه است. همینطور این پروتکل اتصال دوبلکس کامل رو هم ساپورت می کنه. خب اجازه بدید در ادامه یه خورده تخصصی تر با این موضوع برخود کنیم.

مثالی که قبلا گفتیم و یادتونه؟ ، تو اون مثال ایمیل ها پروتکل HTTP رو نشون میدن در حالی که مکالمه چهره پروتکل WebSocket را نشان میده. منظور ما این نیست که ایمیل ها از پروتکل HTTP ارسال میشن ، نه. ایمیل ها بیشتر از پروتکل های SMTP استفاده می کنند ، اما الان موضوع ما این نیست.

HTTP با باز کردن یک اتصال جدید در هر چرخه درخواست پاسخ ، اطلاعات رو تبادل می کنه. بنابراین هر بار که درخواستی ارسال می کنید یا پاسخی دریافت می کنید ، HTTP ارتباط جدیدی برقرار می کنه. به یک اتصال به عنوان یک خط امن برای انتقال اطلاعات فکر کنید. به محض تحویل اطلاعات شما ، HTTP اتصال رو می بنده.

WebSocket اتصال رو برای شما باز نگه می داره تا بتوانید اطلاعات رو از همان خط تبادل کنید تا اینکه یکی از شما اتصال رو ببنده.

کمی تخصصی تر…

بیایید مثل یک برنامه نویس فکر کنیم. وقتی می گیم یک خط امن برای تبادل اطلاعات باز بشه ، فرایندی تو اون اتفاق می افته. این امر معمولاً به عنوان Handshaking گفته می شه. این فرآیندیه که توسط اون هر دو دستگاه درگیر در مکالمه موافقت می کنن که یک درگاه رو برای ارسال و دریافت اطلاعات باز کنن. اکنون این درگاه ها برای همدیگه مسدود شدن و برای یک دستگاه سوم قابل استفاده نیست.

برای Handshaking ، پروتکل HTTP بعضی از بایت های اضافی رو فقط برای تأیید اینکه آیا یک درگاه در هر دو دستگاه آزاده یا می تونه جزئیات درگاه رو دریافت کنه ، دریافت و ارسال می کنه. این بایت های اضافی در صورت نیاز به تبادل دوباره و ادامه دار اطلاعات ، سربار است.

چه زمانی از WebSocket استفاده کنیم و چه موقع نه؟

این معلومه که WebSocket تنها در صورت نیاز به تبادل مکرر اطلاعات مفیده. WebSocket یک اتصال دوبلکس رو فراهم می کنه. این به این معنیه که می شه همزمان اطلاعات رو ارسال و دریافت کرد. این بدیهی است که با هزینه مسدود کردن پورت تا زمان تبادل اطلاعات به دست می آید. بنابراین ، استفاده از WebSocket در یک تبادل باعث صرفه جویی در بایت های مهم و فعال کردن مکالمه های سریعتر با هزینه مسدود کردن یک پورت است.

بهترین مورد استفاده از WebSocket زمانیه که شما به داده های سریع مانند قیمت سهام به سرعت نیاز دارید. قیمت سهام هر ثانیه تغییر می کنه. بنابراین ، استفاده از HTTP باعث می شه زمان بسیار مهمی در دستیابی اطلاعات غیر ضروری هدر بره. در عوض ، از WebSocket استفاده بکنید و سریعتر کارتون رو انجام بدید.

برعکس ، اگر بتونید تأخیر چند میلی ثانیه ای در اطلاعات مورد نظر خودتون رو نادیده بگیرید ، باید برای استقاده از HTTP پیش برید.

ویژگی ها ، رویدادها و روش های WebSocket:

بزارید یک اتصال WebSocket ایجاد کنیم. دستور زیر این کار رو برای ما انجام می ده:

var Socket = new WebSocket(URL, [protocal] );

روش جدید WebSocket روش در معرض API است که با ایجاد URL مشخص شده به عنوان اولین پارامتر ارتباط برقرار می کنه و به یک پارامتر پروتکل اختیاری می چسبد.

ویژگی ها:

پس از برقراری اتصال ، در شیء Socket ما ویژگی های زیر رو داریم:

i. Socket.readyState

  • A read- که وضعیت ارتباط رو نشان می ده.
  • ۰ – اتصال هنوز برقرار نشده.
  • ۱ – اتصال برقرار می شه و ارتباط نیز امکان پذیره.
  • ۲ – اتصال از طریق دستی صورت می گیره.
  • ۳ – اتصال بسته شده یا نمی شه اون و باز کرد.

ii. Socket.bufferedAmount

  • A read- فقط ویژگی است که با استفاده از روش send () تعداد بایت های موجود در صف رو نشان می ده.

رویداد ها:

i. Socket.onOpen

هنگامی که یک اتصال باز می شه ، یک رویداد ایجاد می شه.

ii. Socket.onMessage

هنگامی که مشتری پیامی رو از سرور دریافت می کنه ، رویدادی ایجاد می شه.

iii Socket.onError

این رویداد خطایی در ارتباطات ایجاد کرده.

iv. Socket.onClose

هنگامی که یک اتصال بسته شده ، این رویداد آغاز شده.

روش ها:

i. Socket.send(data)

روش ارسال داده ها رو با استفاده از اتصال انتقال می ده.

ii. Socket.close()

این روش اتصال موجود رو تموم می کنه.

امیدواریم از این مقاله بهره لازم را برده و برای شما مفید بوده باشد. نظرات خود را با ما به اشتراک بگذارید.

ما را در شتابان هاست دنبال کنید.