feat 优化网络库

This commit is contained in:
2026-01-03 13:19:43 +08:00
parent a565692217
commit 470f642515
19 changed files with 180 additions and 126 deletions

View File

@@ -3,8 +3,9 @@ package ws_gateway
import (
"common/log"
"common/net/socket"
"common/utils"
"fmt"
ws_handler2 "gateway/internal/handler/ws_handler"
"gateway/internal/handler/ws_handler"
"go.uber.org/zap"
"strconv"
"time"
@@ -19,40 +20,49 @@ func (g *GatewayWsServer) OnOpen(conn socket.ISocketConn) ([]byte, socket.Action
return nil, socket.None
}
func (g *GatewayWsServer) OnHandShake(conn socket.ISocketConn) {
func (g *GatewayWsServer) OnHandShake(conn socket.ISocketConn, bytes []byte, callback func(conn socket.ISocketConn, bytes []byte)) socket.Action {
token, ok := conn.GetParam("token").(string)
if !ok || token == "" {
if !ok {
g.logger.Warnf("token is not string")
_ = conn.Close()
return
return socket.Close
}
t, err := strconv.Atoi(token)
if err != nil {
_ = conn.Close()
//claims, err := utils.ParseToken(token, config.Get().Auth.Secret)
//if err != nil {
// g.logger.Warnf("token is invalid")
// return socket.Close
//}
t, _ := strconv.Atoi(token)
claims := utils.Claims{
USN: int64(t),
}
if oldClient := ws_handler2.UserMgr.GetByUSN(int64(t)); oldClient != nil {
oldClient.CloseClient()
}
client := ws_handler2.NewClient(int64(t), conn)
ws_handler2.UserMgr.Add(int64(t), client)
conn.SetParam("client", client)
go func(shResp []byte) {
if oldClient := ws_handler.UserMgr.GetByUSN(claims.USN); oldClient != nil {
oldClient.CloseClient()
}
client := ws_handler.NewClient(claims.USN, conn)
ws_handler.UserMgr.Add(claims.USN, client)
conn.SetParam("client", client)
callback(conn, shResp)
}(bytes)
return socket.None
}
func (g *GatewayWsServer) OnMessage(conn socket.ISocketConn, bytes []byte) socket.Action {
client, ok := conn.GetParam("client").(*ws_handler2.Client)
client, ok := conn.GetParam("client").(*ws_handler.Client)
if !ok || client.USN == 0 {
return socket.Close
}
client.OnEvent(&ws_handler2.ClientEvent{Msg: bytes})
client.OnEvent(&ws_handler.ClientEvent{Msg: bytes})
return socket.None
}
func (g *GatewayWsServer) OnPong(conn socket.ISocketConn) {
client, ok := conn.GetParam("client").(*ws_handler2.Client)
client, ok := conn.GetParam("client").(*ws_handler.Client)
if !ok || client.USN == 0 {
return
}
client.OnEvent(&ws_handler2.PongEvent{})
client.OnEvent(&ws_handler.PongEvent{})
}
func (g *GatewayWsServer) OnClose(_ socket.ISocketConn, _ error) socket.Action {