converge/pkg/websocketutil/services.go
Erik Brakkee 8981efd0b5 lots of restructuring.
Experimensts with websockets over yamux failed. Now going to use a
second connection to the server from the agent.
2024-07-20 21:55:34 +02:00

44 lines
915 B
Go

package websocketutil
import (
"github.com/gorilla/websocket"
"log"
"net"
"net/http"
)
type WebSocketAddr string
func (r WebSocketAddr) Network() string {
return "websocket"
}
func (r WebSocketAddr) String() string {
return string(r)
}
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func handleWebSocket(w http.ResponseWriter, r *http.Request,
handler func(w http.ResponseWriter, r *http.Request, websockerConnection net.Conn)) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("Error upgrading to WebSocket:", err)
return
}
wsConn := NewWebSocketConn(conn)
defer wsConn.Close()
handler(w, r, wsConn)
}
type WebSocketService struct {
Handler func(w http.ResponseWriter, r *http.Request, conn net.Conn)
}
func (endpoint *WebSocketService) Handle(w http.ResponseWriter, r *http.Request) {
handleWebSocket(w, r, endpoint.Handler)
}