Адреса ws:// и wss:// и где живёт WebSocket
Разбираемся со схемами адресов ws:// и wss:// и где WebSocket стоит в стеке.
wss:// — схема защищённого WebSocket-соединения поверх TLS, аналог
https://для обычных страниц.
Две схемы адресов
У WebSocket свои схемы URL, параллельные HTTP:
| HTTP-мир | WebSocket-мир | Шифрование |
http:// | ws:// | нет |
https:// | wss:// | да (TLS) |
Адрес выглядит так: wss://example.com/chat. Путь /chat — обычный URL-путь, по нему сервер понимает, к какому обработчику подключают клиента.
Порты
По умолчанию ws:// идёт на порт 80, а wss:// — на 443, ровно как HTTP и HTTPS. Поэтому WebSocket проходит через ту же сетевую инфраструктуру и не требует открывать экзотические порты на файрволе.
Как работает под капотом
WebSocket живёт на прикладном уровне, поверх TCP, рядом с HTTP:
Приложение: ваш чат / игра Протокол: WebSocket (поверх TCP) Транспорт: TCP (надёжная доставка, порядок) Сеть: IP
Для wss:// между WebSocket и TCP добавляется слой TLS — шифрование. Важное следствие: wss:// не только защищает данные, но и не даёт прокси «заглянуть» внутрь и сломать рукопожатие — трафик для них непрозрачен. Поэтому на проде почти всегда используют именно wss://.
Связь со страницей
Браузеры запрещают «смешанный контент»: со страницы по https:// нельзя открыть незащищённый ws:// — только wss://. Это логично: бессмысленно шифровать страницу, оставляя её живой канал открытым.
Частые ошибки
- Открывать
ws://со страницы по HTTPS. Браузер заблокирует как mixed content — нуженwss://. - Путать схему с путём.
wss://host/chat:wss— схема,/chat— путь маршрутизации на сервере. - Думать, что
wss://требует отдельного порта. Он идёт на 443, как и HTTPS.
Итоги
ws://— незащищённый WebSocket (порт 80),wss://— поверх TLS (порт 443).- WebSocket — прикладной протокол поверх TCP, рядом с HTTP в стеке.
- На проде используют
wss://: и шифрование, и проходимость через прокси. - Со страницы по HTTPS открыть можно только
wss://.