WebSocket предоставляет длительное двустороннее соединение с обменом сообщениями, а обычный HTTP строится вокруг запросов и ответов. После установки WebSocket стороны могут отправлять сообщения независимо.
L4 распределяет соединения по сетевым параметрам, а L7 понимает прикладной протокол и может маршрутизировать HTTP по пути или заголовкам. Для WebSocket подходят оба уровня при правильной поддержке соединений.
WebSocket создаёт длительное двунаправленное соединение: после handshake клиент и сервер могут отправлять сообщения независимо, без отдельного HTTP-запроса на каждое событие.
История должна храниться вне памяти WebSocket-процесса — в долговечной БД. После переподключения клиент запрашивает сообщения после последнего подтверждённого номера или курсора.
В классическом WebSocket-handshake поверх HTTP/1.1 запрос Upgrade инициирует клиент. Сервер принимает переход ответом 101 Switching Protocols либо отклоняет запрос.
WebSocket поддерживает длительный двусторонний канал сообщений. При HTTP long polling клиент держит запрос открытым до события или timeout, затем отправляет следующий.
Открытое соединение остаётся на одном инстансе, но события могут возникать на другом. Используйте общий broker/pub-sub и маршрутизацию к владельцу соединения; важное состояние храните вне процесса.
L4 распределяет транспортные соединения, L7 понимает HTTP и может маршрутизировать по host/path/заголовкам. Для миллионов WebSocket важны ресурсы соединений и TLS, а не только номер уровня.
Счётчик и реестр соединений нужно менять под одной блокировкой, а чтение счётчика тоже синхронизировать. Реестр защищает от повторного подключения и двойного отключения одной записи.
Без критерия единственного ответа нет. Обычно выделяют WebSocket как канал двунаправленного обмена, тогда как остальные связаны с HTTP-семантикой запросов.
Прикладной обмен можно перенести на WebSocket, но придётся самостоятельно определить запросы, ответы, ошибки, повторные подключения и восстановление состояния.