From 3a31259ae46616a927baea3c03da12daaa620cc6 Mon Sep 17 00:00:00 2001 From: Tomas Kocman Date: Mon, 22 Aug 2022 10:27:35 +0200 Subject: [PATCH] feat: add hijack to response writer --- CHANGELOG.md | 7 ++++++- internal/responsewriter.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1aa03f4..bbba2c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,14 @@ How to release a new version: ## [Unreleased] +## [0.2.0] - 2022-08-22 +### Added +- HTTP response writer implements hijacking to support web sockets. + ## [0.1.0] - 2022-08-01 ### Added - Added Changelog. -[Unreleased]: https://github.com/strvcom/strv-backend-go-net/compare/v0.1.0...HEAD +[Unreleased]: https://github.com/strvcom/strv-backend-go-net/compare/v0.2.0...HEAD +[0.2.0]: https://github.com/strvcom/strv-backend-go-net/releases/tag/v0.2.0 [0.1.0]: https://github.com/strvcom/strv-backend-go-net/releases/tag/v0.1.0 diff --git a/internal/responsewriter.go b/internal/responsewriter.go index b7dce31..a8c4a0f 100644 --- a/internal/responsewriter.go +++ b/internal/responsewriter.go @@ -1,6 +1,9 @@ package internal import ( + "bufio" + "errors" + "net" "net/http" "sync/atomic" @@ -55,3 +58,11 @@ func (r *ResponseWriter) TryWriteHeader(statusCode int) bool { } return false } + +func (r *ResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + h, ok := r.ResponseWriter.(http.Hijacker) + if !ok { + return nil, nil, errors.New("hijack not supported") + } + return h.Hijack() +}