У меня есть вопрос к этому примеру Boost.Beast:
В строке 643 выполняется обновление WebSocket. Однако, если я правильно понимаю, в очереди все еще могут быть команды записи HTTP, которые выполняются асинхронно. Таким образом, они выполняются параллельно текущей связи WebSocket. Это законно? Или я еще не до конца понял пример?
Не разрешено отправлять HTTP-ответ после отправки ответа 101 Switching Protocols. Но это не может произойти, потому что, как только сервер получит HTTP-запрос на обновление, он будет следовать процедуре обновления. Клиент, который отправляет другой обычный HTTP-запрос после отправки запроса на обновление, будет ошибочным.
Других решений пока нет …