feat(ws): WebSocket 核心模块(Hub + Client + PubSub + Handler)
- pkg/ws/message.go: 统一消息协议(Message/Response/PushMessage) - pkg/ws/hub.go: Hub 连接管理(注册/注销/按 userID 查找/在线计数) - pkg/ws/client.go: 客户端连接封装(readPump/writePump/心跳 30s) - pkg/ws/pubsub.go: Redis Pub/Sub 消息路由(按用户频道发布/订阅) - app/ws/handler.go: WebSocket 升级处理(JWT 认证 + 消息分发) - app/ws/router.go: GET /ws 路由注册 - app/ws/provider.go: Wire Provider Set - 更新 provider/router 集成 WebSocket 模块 Made-with: Cursor
This commit is contained in:
32
backend/go-service/app/ws/provider.go
Normal file
32
backend/go-service/app/ws/provider.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package ws
|
||||
|
||||
import (
|
||||
"github.com/echochat/backend/config"
|
||||
"github.com/echochat/backend/pkg/ws"
|
||||
"github.com/google/wire"
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
// ProvideHub 创建并启动 Hub 实例
|
||||
func ProvideHub() *ws.Hub {
|
||||
hub := ws.NewHub()
|
||||
go hub.Run()
|
||||
return hub
|
||||
}
|
||||
|
||||
// ProvidePubSub 创建 PubSub 实例
|
||||
func ProvidePubSub(rdb *redis.Client, hub *ws.Hub) *ws.PubSub {
|
||||
return ws.NewPubSub(rdb, hub)
|
||||
}
|
||||
|
||||
// ProvideWSHandler 创建 WebSocket Handler
|
||||
func ProvideWSHandler(hub *ws.Hub, pubsub *ws.PubSub, cfg *config.JWTConfig) *Handler {
|
||||
return NewHandler(hub, pubsub, cfg)
|
||||
}
|
||||
|
||||
// WSSet WebSocket 模块 Wire Provider Set
|
||||
var WSSet = wire.NewSet(
|
||||
ProvideHub,
|
||||
ProvidePubSub,
|
||||
ProvideWSHandler,
|
||||
)
|
||||
Reference in New Issue
Block a user