فهرست منبع

support hijacking in middleware, for websocket

Alexander Belanger 4 سال پیش
والد
کامیت
c1c05b7ce4
1فایلهای تغییر یافته به همراه11 افزوده شده و 0 حذف شده
  1. 11 0
      api/server/router/router.go

+ 11 - 0
api/server/router/router.go

@@ -1,6 +1,9 @@
 package router
 
 import (
+	"bufio"
+	"errors"
+	"net"
 	"net/http"
 	"os"
 	"path"
@@ -251,6 +254,14 @@ func (rw *requestLoggerResponseWriter) WriteHeader(code int) {
 	rw.ResponseWriter.WriteHeader(code)
 }
 
+func (rw *requestLoggerResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+	h, ok := rw.ResponseWriter.(http.Hijacker)
+	if !ok {
+		return nil, nil, errors.New("ResponseWriter Interface does not support hijacking")
+	}
+	return h.Hijack()
+}
+
 type RequestLoggerMiddleware struct {
 	logger *logger.Logger
 }