36 lines
902 B
Go
36 lines
902 B
Go
package server
|
|
|
|
import (
|
|
"github.com/gorilla/websocket"
|
|
"github.com/labstack/echo/v4"
|
|
"github.com/rs/zerolog/log"
|
|
"net/http"
|
|
)
|
|
|
|
type wsErrorFunc func(w http.ResponseWriter, r *http.Request, status int, reason error)
|
|
|
|
func createWSCheckOriginFunc(origin string) func(r *http.Request) bool {
|
|
return func(req *http.Request) bool {
|
|
log.Debug().
|
|
Str("origin", req.Header.Get("Origin")).
|
|
Str("host", origin).
|
|
Msg("ws check origin")
|
|
return true
|
|
}
|
|
}
|
|
|
|
func createWSErrorFunc(e *echo.Echo) wsErrorFunc {
|
|
return func(w http.ResponseWriter, r *http.Request, status int, reason error) {
|
|
err := echo.NewHTTPError(status, reason)
|
|
c := e.NewContext(r, w)
|
|
e.HTTPErrorHandler(err, c)
|
|
}
|
|
}
|
|
|
|
func initWebsocketUpgrader(cfg Config, router *echo.Echo) websocket.Upgrader {
|
|
return websocket.Upgrader{
|
|
CheckOrigin: createWSCheckOriginFunc(cfg.Host),
|
|
Error: createWSErrorFunc(router),
|
|
}
|
|
}
|