Ответ
Термин «HTTP-сокеты» не является стандартным, но обычно под ним понимают либо низкоуровневую работу с TCP-соединением, лежащим в основе HTTP-запроса, либо технологию WebSocket.
HTTP Hijacking
HTTP Hijacking — это механизм в Go, который позволяет «перехватить» (hijack) сетевое соединение у стандартного HTTP-сервера. Это делается с помощью интерфейса http.Hijacker
.
Зачем это нужно?
Основная цель — перейти от стандартного протокола HTTP/1.1 к другому протоколу поверх того же TCP-соединения. Классический пример — обновление соединения до WebSocket или реализация собственного протокола.
После вызова Hijack()
вы получаете полный контроль над net.Conn
и больше не можете использовать высокоуровневые удобства http.ResponseWriter
(например, w.Write()
или w.WriteHeader()
).
WebSockets
Для двусторонней связи в реальном времени чаще всего используют WebSockets. Вместо того чтобы реализовывать рукопожатие вручную через Hijacking, я использовал готовые библиотеки, в первую очередь gorilla/websocket
, которая является де-факто стандартом в сообществе. Она абстрагирует всю сложность обновления протокола и предоставляет удобный API для отправки и получения сообщений.
Таким образом, мой опыт включает как низкоуровневый перехват соединений для нестандартных задач, так и использование стандартных решений вроде WebSockets для интерактивных веб-приложений.