گذشته کوتاه درباره Real-Time Web Applications

در ابتدا وب با ایده‌ی انجام درخواست‌های کاربر و پاسخ به درخواست‌های کاربران ساخته شد. این شیوه تا سال‌ها مورد استفاده قرار می‌گرفت. در سال ۲۰۰۵ با معرفی AJAX بسیاری از مردم شروع به بررسی ارتباط دوطرفه بین کاربر و سرور کردند (همچون Websocket).

برنامه‌های وب بسیار پیشرفت کردند و از گذشته تا کنون پیشرفت‌های زیادی داشتند، بزرگترین نکته در ارتباط بین سرور و کلاینت همان روش قدیمی HTTP است. در این روش سرور تنها در صورتی که درخواستی از سمت کلاینت درخواست شود پاسخ می‌دهد. برای غلبه بر این روش قدیمی بسیاری روش جدید ابداع شد تا به سرور اجازه بدهد داده‌ها را به سمت کلاینت ارسال کنند. یکی از ان روش‌های پرطرفدار long-polling است که ارتباط HTTP را تا زمانی که داده برای انتقال به کاربر وجود داشته باشد،‌ باز نگه می‌دارد.

یکی از روش‌های معمول قدیمی برای داشتن یک سیستم Real-Time زمانبندی یک درخواست بود (برای مثال هر ۵ثانیه درخواستی برای رفرش شدن مقادیر ارسال می‌شد). مشکل اصلی این ارتباطات داشتن سربارهایی بر HTTP بود. در هر بار که درخواستی برای سرور ارسال میشود تعدادی Header و Cookie هم به سرور ارسال می‌شود پس به طور قابل توجهی داده‌ی زیادی رد و بدل می‌شود و این سیستم در برنامه‌هایی (برای مثال : بازی‌های اینترنتی) که میزان Latency برای آن‌ها مهم است تا بازی‌ها را نرم انجام دهد.

پس آنچه که ما به آن نیاز داریم یک ارتباط مداوم با Latency کم است که از درخواست دو طرفه از سمت کاربر و سرور پشتیبانی کند و این دقیقا کاری است که Websocket انجام می‌دهد.

استفاده از Websocket

برای استفاده از Websocket در جاوا اسکریپت کد ساده‌ی زیر را اجرا می‌کنیم. توجه داشته باشید Websocketها از scheme هایی به طور ws و ws (همچون https برای ارتباط های secure) استفاده می‌کند

در این مثال ما به یک سرور آماده به آدرس ws://echo.websocket.org متصل می‌شویم که یک سوکتی می‌باشد که با ارسال هر متنی همان متن را پاسخ می‌دهد در این مثال نیز ما با ارسال متن یک TextBox مقدار آن را از سمت سرور پس می‌گیریم و آن را alert می‌کنیم.

مانیتور کردن ترافیک Websocket با Chrome Dev Tools

ابزار Developer tools در مرورگر کروم قابلیت مانیتور Web Socket ها را دارد. با روش زیر می‌توانید به این بزار دسترسی پیدا کنید.

  • با راست کلیک در صفحه و انتخاب گزینه Inspect، پنجره Developer Tools باز می‌شود.
  • به تب Network بروید.
  • روی کانکشن Websocket خود کلیک کنید.
  • به تب Frames بروید.

 

Server Side در Webscoket

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