46 lines
740 B
Go
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()
|
|
}
|