长连接接口增加玩家信息绑定

This commit is contained in:
ayflying
2025-04-10 15:42:08 +08:00
parent 366ddb45ea
commit 08f2b2d9bc
5 changed files with 205 additions and 30 deletions

View File

@@ -1,14 +1,24 @@
package websocket
import "google.golang.org/protobuf/proto"
// 定义一个处理方法的类型
type Handler func(conn *WebsocketData, req any) (err error)
type OnConnectHandler func(conn *WebsocketData)
type Handler2 func(conn *WebsocketData)
type HandlerMessage func(conn *WebsocketData, req any)
type PbType func(code int32, data []byte) proto.Message
type PbType2 func(data []byte) (int, []byte)
// 路由器的处理映射
var (
handlers = make(map[int]Handler)
OnConnectHandlers = make([]OnConnectHandler, 0)
OnCloseHandlers = make([]OnConnectHandler, 0)
OnConnectHandlers = make([]Handler2, 0)
OnCloseHandlers = make([]Handler2, 0)
onMessageHandlers = make([]HandlerMessage, 0)
Byte2Pb = make([]PbType, 0)
Pb2Bytes = make([]PbType2, 0)
)
// 注册方法将某个消息路由器ID和对应的处理方法关联起来
@@ -17,10 +27,23 @@ func (s *SocketV1) RegisterRouter(cmd int, handler Handler) {
}
//注册方法,讲长连接登陆方法进行注册
func (s *SocketV1) RegisterOnConnect(_func OnConnectHandler) {
func (s *SocketV1) RegisterOnConnect(_func Handler2) {
OnConnectHandlers = append(OnConnectHandlers, _func)
}
func (s *SocketV1) RegisterOnClose(_func OnConnectHandler) {
func (s *SocketV1) RegisterOnClose(_func Handler2) {
OnCloseHandlers = append(OnCloseHandlers, _func)
}
//注册方法长连接消息体
func (s *SocketV1) RegisterMessage(_func HandlerMessage) {
onMessageHandlers = append(onMessageHandlers, _func)
}
func (s *SocketV1) RegisterByte2Pb(_func PbType) {
Byte2Pb = append(Byte2Pb, _func)
}
func (s *SocketV1) RegisterPb2Byte(_func PbType2) {
Pb2Bytes = append(Pb2Bytes, _func)
}