修复:为 user-svc 添加健康检查和启动顺序控制
This commit is contained in:
@@ -3,57 +3,57 @@ package ws
|
||||
import (
|
||||
"log"
|
||||
|
||||
"backend/gateway/internal/service"
|
||||
"gateway/internal/service"
|
||||
)
|
||||
|
||||
type Hub struct {
|
||||
// 注册的客户端
|
||||
clients map[*Client]bool
|
||||
Clients map[*Client]bool
|
||||
|
||||
// 从客户端接收的消息
|
||||
broadcast chan *Message
|
||||
Broadcast chan *Message
|
||||
|
||||
// 注册请求
|
||||
register chan *Client
|
||||
Register chan *Client
|
||||
|
||||
// 注销请求
|
||||
unregister chan *Client
|
||||
Unregister chan *Client
|
||||
|
||||
// 用户服务
|
||||
userService *service.UserService
|
||||
UserService *service.UserService
|
||||
}
|
||||
|
||||
func NewHub(userService *service.UserService) *Hub {
|
||||
return &Hub{
|
||||
broadcast: make(chan *Message),
|
||||
register: make(chan *Client),
|
||||
unregister: make(chan *Client),
|
||||
clients: make(map[*Client]bool),
|
||||
userService: userService,
|
||||
Broadcast: make(chan *Message),
|
||||
Register: make(chan *Client),
|
||||
Unregister: make(chan *Client),
|
||||
Clients: make(map[*Client]bool),
|
||||
UserService: userService,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Hub) Run() {
|
||||
for {
|
||||
select {
|
||||
case client := <-h.register:
|
||||
h.clients[client] = true
|
||||
log.Printf("Client connected. Total clients: %d", len(h.clients))
|
||||
case client := <-h.Register:
|
||||
h.Clients[client] = true
|
||||
log.Printf("Client connected. Total clients: %d", len(h.Clients))
|
||||
|
||||
case client := <-h.unregister:
|
||||
if _, ok := h.clients[client]; ok {
|
||||
delete(h.clients, client)
|
||||
close(client.send)
|
||||
log.Printf("Client disconnected. Total clients: %d", len(h.clients))
|
||||
case client := <-h.Unregister:
|
||||
if _, ok := h.Clients[client]; ok {
|
||||
delete(h.Clients, client)
|
||||
close(client.Send)
|
||||
log.Printf("Client disconnected. Total clients: %d", len(h.Clients))
|
||||
}
|
||||
|
||||
case message := <-h.broadcast:
|
||||
for client := range h.clients {
|
||||
case message := <-h.Broadcast:
|
||||
for client := range h.Clients {
|
||||
select {
|
||||
case client.send <- message:
|
||||
case client.Send <- message:
|
||||
default:
|
||||
close(client.send)
|
||||
delete(h.clients, client)
|
||||
close(client.Send)
|
||||
delete(h.Clients, client)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user