На эти URL серверу разрешено отвечать, как будто он ничего не знает о WebSockets. Так что простая ошибка 400 - это прекрасно. От вас не требуется отображать дополнительную информацию в теле или добавлять дополнительные заголовки.
А в более крупных настройках сервера обычно существует обратный прокси-сервер, который принимает каждый входящий запрос и перенаправляет эти запросы в соответствующие приложения на основе URL-адреса, и это будет реальной проблемой, если протоколы на основе HTTP потребуют, чтобы это обратный прокси должен был знать все протоколы.
Как только рукопожатие клиента было отправлено, клиент ДОЛЖЕН
дождитесь ответа от сервера перед отправкой дальнейших данных.
Клиент ДОЛЖЕН проверить ответ сервера следующим образом:
- Если код состояния, полученный с сервера, не равен 101,
клиент обрабатывает ответ в соответствии с процедурами HTTP [RFC2616].
Ошибка 400 описывается как:
6.5.1. 400 Неверный запрос
Код состояния 400 (неверный запрос) указывает, что сервер не может или
не будет обрабатывать запрос из-за того, что воспринимается как
ошибка клиента (например, синтаксис некорректного запроса, неверный запрос)
фрейм сообщения или обманчивая маршрутизация запросов).
Что также соответствует запросу на обновление для URL, который не поддерживает этот протокол.
Коды ошибок 4xx определены следующим образом:
6,5. Ошибка клиента 4xx
Класс статуса кода 4xx (Ошибка клиента) указывает, что клиент
похоже ошибся За исключением случаев ответа на запрос HEAD,
Сервер ДОЛЖЕН послать представление, содержащее объяснение
ошибка ситуации, и является ли она временной или постоянной
состояние. Эти коды состояния применимы к любому методу запроса.
Пользовательские агенты ДОЛЖНЫ отображать любое включенное представление пользователю.
Таким образом, ответ с 400 статусами и без дополнительной информации действителен, потому что это не обязательно.