go-kratos/internal/service/ws.go
2025-04-28 19:58:24 +08:00

46 lines
740 B
Go

package service
import (
"net/http"
ws "ky-go-kratos/internal/websocket"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
var hub = ws.NewHub()
func WebSocketHandler(w http.ResponseWriter, r *http.Request) {
roomName := r.URL.Query().Get("room")
uid := r.URL.Query().Get("uid")
if roomName == "" || uid == "" {
http.Error(w, "missing params", http.StatusBadRequest)
return
}
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
return
}
room := hub.GetRoom(roomName)
c := &ws.Connection{
UID: uid,
Conn: conn,
Room: room,
Send: make(chan *ws.WSMessage, 256),
}
room.Register <- c
go c.WritePump()
c.ReadPump()
}