Skip to content

Commit cda4956

Browse files
committed
add ws to a new connect method
1 parent 2617f44 commit cda4956

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

ws_server.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import (
1111

1212
// WebsocketServer implements a websocket-based connection to guacd.
1313
type WebsocketServer struct {
14-
connect func(*http.Request) (Tunnel, error)
14+
connect func(*http.Request) (Tunnel, error)
15+
connectWs func(*websocket.Conn, *http.Request) (Tunnel, error)
1516

1617
// OnConnect is an optional callback called when a websocket connects.
1718
// Deprecated: use OnConnectWs
@@ -26,12 +27,20 @@ type WebsocketServer struct {
2627
OnDisconnectWs func(string, *websocket.Conn, *http.Request, Tunnel)
2728
}
2829

30+
// NewWebsocketServer creates a new server with a simple connect method.
2931
func NewWebsocketServer(connect func(*http.Request) (Tunnel, error)) *WebsocketServer {
3032
return &WebsocketServer{
3133
connect: connect,
3234
}
3335
}
3436

37+
// NewWebsocketServerWs creates a new server with a connect method that takes a websocket.
38+
func NewWebsocketServerWs(connect func(*websocket.Conn, *http.Request) (Tunnel, error)) *WebsocketServer {
39+
return &WebsocketServer{
40+
connectWs: connect,
41+
}
42+
}
43+
3544
const (
3645
websocketReadBufferSize = maxGuacMessage
3746
websocketWriteBufferSize = maxGuacMessage * 2
@@ -60,7 +69,13 @@ func (s *WebsocketServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
6069
}()
6170

6271
logrus.Debug("Connecting to tunnel")
63-
tunnel, e := s.connect(r)
72+
var tunnel Tunnel
73+
var e error
74+
if s.connect != nil {
75+
tunnel, e = s.connect(r)
76+
} else {
77+
tunnel, e = s.connectWs(ws, r)
78+
}
6479
if e != nil {
6580
return
6681
}

0 commit comments

Comments
 (0)