Кто инициирует HTTP-запрос на Upgrade при установлении WebSocket-соединения: клиент или сервер?

В классическом WebSocket-handshake поверх HTTP/1.1 запрос Upgrade инициирует клиент. Сервер принимает переход ответом 101 Switching Protocols либо отклоняет запрос.

Короткий ответ

Что ответить на собеседовании

В классическом WebSocket-handshake поверх HTTP/1.1 запрос Upgrade инициирует клиент. Сервер принимает переход ответом 101 Switching Protocols либо отклоняет запрос.

Подробный разбор

Ответ с пояснениями

В классическом WebSocket-handshake поверх HTTP/1.1 запрос Upgrade инициирует клиент. Сервер принимает переход ответом 101 Switching Protocols либо отклоняет запрос.

Клиент отправляет GET с заголовками Upgrade, Connection, Sec-WebSocket-Key и версией протокола. Сервер проверяет handshake и возвращает корректный Sec-WebSocket-Accept. После успешного обмена по соединению идут WebSocket frames, а не обычные последовательные HTTP-ответы. Сервер не может самовольно перевести произвольное соединение браузера в WebSocket. Для HTTP/2 и HTTP/3 существуют другие механизмы установления, поэтому описание именно с Upgrade и статусом 101 относится к HTTP/1.1.

Источник: www.rfc-editor.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее