converge/pkg/support/websocketutil/services.go
2024-07-30 19:59:13 +02:00

46 lines
962 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),
text bool) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("Error upgrading to WebSocket:", err)
return
}
wsConn := NewWebSocketConn(conn, text)
defer wsConn.Close()
handler(w, r, wsConn)
}
type WebSocketService struct {
Handler func(w http.ResponseWriter, r *http.Request, conn net.Conn)
Text bool
}
func (endpoint *WebSocketService) Handle(w http.ResponseWriter, r *http.Request) {
handleWebSocket(w, r, endpoint.Handler, endpoint.Text)
}