В классическом WebSocket-handshake поверх HTTP/1.1 запрос Upgrade инициирует клиент. Сервер принимает переход ответом 101 Switching Protocols либо отклоняет запрос.
Кто инициирует HTTP-запрос на Upgrade при установлении WebSocket-соединения: клиент или сервер?
В классическом 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.