حامد خاکباز
حامد خاکباز
خواندن ۳ دقیقه·۲ سال پیش

آشنایی با پروتکل WebSocket و کاربردهای آن

منظور از WebSocket چیست؟ WebSocket چه کاربردهایی دارد؟ چطور می‌توان یک ارتباط WebSocket داشت؟ WebSocket چه مزایا و معایبی دارد؟ در این مقاله به دنبال معرفی WebSocket و کاربردهای آن می‌پردازیم.

همانطور که می‌دانید پروتکل HTTP امروزه معروف ترین و یکی از پرکاربرد ترین پروتکل در صنعت IT و شبکه‌های کامپیوتری و سرویس وب هست.

اما با وجود تمام مزیت هایی که در این پروتکل وجود دارد باز هم برخی از نیازهای وب اپلیکیشن‌ها و ارتباطات وب را پاسخ گو نیست. یکی از مهم‌ترین نقاط ضعف این پروتکل این هست که متد ارتباطی آن one-directional هست. در حالی که وب اپلیکیشن‌های امروزی برای این‌که عملکرد بهینه تری داشته باشند به متد ارتباطی two-way نیاز دارند. از این رو اکثر وب سرورها در نسخه های جدید WebSocket را اضافه کرده اند و آن را پشتیبانی می‌کنند.

آشنایی با WebSocket

در واقع WebSocket یک تکنولوژی جدید برای تبادل دیتا هست که یک کانال ارتباطی دوطرفه با remote host برقرار می‌کند.. به عبارت فنی تر WebSocket ارتباط two-way را در یک محیط کنترل شده با کلاینتی که در حال اجرای یک untrusted code هست، برقرار می‌کند. در این ارتباط مرورگر از مدل امنیتی origin-based استفاده می‌کند. این باعث می‌شود ارتباط روی مرورگر با سرور و TCP handshake آنها، جوری برقرار شود که بدون نیاز به کانکشن های اضافی ارتباط دوطرفه ی ایمن برقرار شود.

همچنین سازوکار HTTP در حال حاضر کند هست چراکه وقتی تحت HTTP درخواست دریافت یک فایل ارسال می‌شود، باید منتظر پاسخ کامل سرور ماند و real-time نمی‌توان به آن دیتا درستی یافت، این تاخیر مانعی جدی برای بهینه سازی ارتباطات web-based هست. در حالی که تحت WebSocket این کندی و تاخیر برطرف شده و این ضعف به نوعی پوشش داده شده است. به طور خلاصه؛ هدف اصلی WebSocket تبادل دوطرفه ی دیتا به‌شکل low-latency هست.

اما برخی از کاربردهای اصلی WebSocket عبارت اند از؛ بازی‌های آنلاین، نوتیفیکیشن های لحظه‌ای اپلیکیشن‌ها، دریافت اطلاعات لحظه‌ای هواشناسی، تغییر لحظه‌ای قیمت‌ها و هر اپلیکیشن‌ web-based و browser-based ای که نیاز به ارسال و دریافت بلادرنگ دیتا دارند و ... .

همچنین برای پیاده سازی WebSocket در پروژه ها سه المان اصلی و در واقع سه گام و مرحله پیاده‌سازی نیاز هست:

۱- سمت کلاینت؛ استفاده از مرورگری که روی آن WebSocket پیاده سازی شده

۲- دولوپر؛ انجام کد نویسی سمت وب و سرور

۳- سرور؛ استفاده از وب سروری که WebSocket را به طور کامل ساپورت کند.

اما WebSocket از نظر ظاهری و اصطلاحن URL Scheme به جای //:http از //:ws و //:wss استفاده می‌کند. به عنوان مثال آدرس هاست در WebSocket به شکل ws://example.com معرفی می‌شود.

اما از معایب WebSocket می‌توان به نداشتن edge caching (برخلاف HTTP ) و همچنین دشواری و پیچیدگی Develope آن اشاره کرد. همچنین برای WebSocket مرورگر باید حتمن HTML5 را ساپورت کند. از طرفی WebSocket مکانیسم هایی شبیه AJAX را نیز به طور کامل ساپورت نمی‌کند.

از طرفی کانکشن های WebSocket برای این ایجاد شده اند که با دوام تر از HTTP باشند. همچنین اگر نیاز شما این باشد که مثلن هر نیم ساعت یک‌بار آپدیت دریافت کنید؛ HTTP برای استفاده در این پروژه بهتر است. ولی اگر هر ثانیه به آپدیت نیاز دارید؛ WebSocket مناسب تر هست، چرا که بسیار سریع‌تر از HTTP کانکشن را Establish می‌کند.

همچنین برای کدنویسی WebSocket نیاز به زبان برنامه نویسی خاصی نیست و در اکثر زبان ها ماژول WebSocketModule وجود دارد. مثلن در ASP.NET 4.5 المان <websocket> نشان دهنده‌ی استفاده از این ماژول هست. یا در Python هم با import websockets می‌توان از WebSocket استفاده کرد.

به عنوان جمع‌بندی؛ WebSocket یک نوع تکنیک push هست که روی یک TCP Socket کانال ارتباطی full-duplex طور ایجاد می‌کند و برخلاف HTTP از مدل‌های request-response و SYN/ACK استفاده نمی‌کند.

websocketبرنامه نویسیسمت کلاینتنقاط ضعفکد نویسی
Cloud Engineer
شاید از این پست‌ها خوشتان بیاید