converge/pkg/websocketutil/services.go
Erik Brakkee 12ecb72329 Lots of work on docuemtation. The docs page now shows the correct
installation dependent URLs. For now using ServerALiveInterval
to avoid disconnects.
2024-07-21 21:41:53 +02:00

47 lines
994 B
Go

package websocketutil
import (
"github.com/gorilla/websocket"
"log"
"net"
"net/http"
"time"
)
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
}
conn.SetReadDeadline(time.Time{})
conn.SetWriteDeadline(time.Time{})
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)
}