WebSocket — سوکت وب دوطرفه
یک اتصال دائمی و دوطرفه بین مرورگر و سرور. با یک درخواست HTTP شروع میشود و بعد به جریان سبکی از فریمها تبدیل میشود؛ مناسب چت، اعلان زنده و داشبورد.
- لایهٔ OSI: 7 (کاربرد)
- انتقال: TCP
- پورت: 80 / 443
- استاندارد: RFC 6455
- سطح: متوسط · حدود 7 دقیقه
نکتههای کلیدی
- اتصال دوطرفه و دائمی روی یک سوکت TCP؛ سرور بدون درخواست داده میفرستد.
- دستدهی با HTTP Upgrade انجام میشود، پس از پورتهای ۸۰ و ۴۴۳ عبور میکند.
- wss:// همان WebSocket روی TLS است.
مراحل شبیهسازی (7 بسته)
- Upgrade: اتصال با یک درخواست HTTP معمولی شروع میشود که ارتقا به WebSocket را میخواهد.
- 101: سرور با کد ۱۰۱ میپذیرد. مقدار Accept از هش SHA-1 کلید کلاینت بهعلاوهٔ یک GUID ثابت ساخته میشود تا ثابت شود سرور واقعاً WebSocket میفهمد.
- فریم متنی: مرورگر پیام «Hello» را در یک فریم ماسکشده میفرستد. همهٔ فریمهای کلاینت باید ماسک شوند تا پراکسیهای قدیمی فریب نخورند.
- پیام سرور: سرور هر زمان که بخواهد، بدون درخواست، داده میفرستد؛ مزیت اصلی WebSocket همین است. فریمهای سرور ماسک ندارند.
- Ping: سرور برای اطمینان از زنده بودن اتصال یک فریم Ping میفرستد.
- Pong: مرورگر خودکار با Pong پاسخ میدهد؛ ماسکشده، چون از سمت کلاینت است.
- Close: برای بستن، فریم Close با کد ۱۰۰۰ (پایان عادی) فرستاده میشود و طرف مقابل همان را برمیگرداند.