Files
push-server/interval/server/ws/handler.go
R2m1liA 1dbcc03e46 feat: 基本广播服务
- 由Hub接收/push/{topic}的请求并解析信息体广播到对应的Client
2025-12-17 14:49:59 +08:00

33 lines
652 B
Go

package ws
import (
"context"
"log"
"net/http"
"time"
"github.com/coder/websocket"
)
func Handler(ctx context.Context, h *Hub) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
conn, err := websocket.Accept(w, r, &websocket.AcceptOptions{
OriginPatterns: []string{"*"},
})
log.Println("New WebSocket connection from", r.RemoteAddr, "at", time.Now().Format(time.RFC3339))
if err != nil {
log.Println("WebSocket accept error:", err)
return
}
c := NewClient(r.RemoteAddr, conn, h, ctx)
log.Println("Client", r.RemoteAddr, "connected.")
go c.ReadLoop()
go c.WriteLoop()
go heartbeat(c)
}
}