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) }