35 lines
836 B
Go
35 lines
836 B
Go
package websocketutil
|
|
|
|
import (
|
|
"cidebug/pkg/iowrappers"
|
|
"github.com/gorilla/websocket"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
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 iowrappers.ReadWriteAddrCloser)) {
|
|
conn, err := upgrader.Upgrade(w, r, nil)
|
|
if err != nil {
|
|
log.Println("Error upgrading to WebSocket:", err)
|
|
return
|
|
}
|
|
wsConn := iowrappers.NewWebSocketConn(conn)
|
|
defer wsConn.Close()
|
|
|
|
handler(w, r, wsConn)
|
|
}
|
|
|
|
type WebSocketService struct {
|
|
Handler func(w http.ResponseWriter, r *http.Request, conn iowrappers.ReadWriteAddrCloser)
|
|
}
|
|
|
|
func (endpoint *WebSocketService) Handle(w http.ResponseWriter, r *http.Request) {
|
|
handleWebSocket(w, r, endpoint.Handler)
|
|
}
|