Bladeren bron

Hijacker interface added

olebedev 11 jaren geleden
bovenliggende
commit
4a24c47a69
1 gewijzigde bestanden met toevoegingen van 13 en 0 verwijderingen
  1. 13 0
      response_writer.go

+ 13 - 0
response_writer.go

@@ -1,7 +1,10 @@
 package gin
 
 import (
+	"bufio"
+	"errors"
 	"log"
+	"net"
 	"net/http"
 )
 
@@ -11,6 +14,7 @@ type (
 		Status() int
 		Written() bool
 		WriteHeaderNow()
+		Hijack() (net.Conn, *bufio.ReadWriter, error)
 	}
 
 	responseWriter struct {
@@ -54,3 +58,12 @@ func (w *responseWriter) Status() int {
 func (w *responseWriter) Written() bool {
 	return w.written
 }
+
+// allow connection hijacking
+func (w *responseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+	hijacker, ok := w.ResponseWriter.(http.Hijacker)
+	if !ok {
+		return nil, nil, errors.New("the ResponseWriter doesn't support the Hijacker interface")
+	}
+	return hijacker.Hijack()
+}