feat 排队

This commit is contained in:
2026-01-06 18:36:17 +08:00
parent 6523820cf6
commit 97c7813a24
9 changed files with 600 additions and 86 deletions

View File

@@ -28,9 +28,9 @@ const (
// ISocketServer 由应用层实现
type ISocketServer interface {
OnOpen(ISocketConn) ([]byte, Action) // 开启连接
OnHandShake(ISocketConn, []byte, func(ISocketConn, []byte)) Action // 开始握手
OnMessage(ISocketConn, []byte) Action // 收到消息
OnOpen(ISocketConn) ([]byte, Action) // 开启连接
OnHandShake(ISocketConn) Action // 开始握手
OnMessage(ISocketConn, []byte) Action // 收到消息
OnPong(ISocketConn)
OnClose(ISocketConn, error) Action // 关闭连接
OnTick() (time.Duration, Action)

View File

@@ -103,7 +103,15 @@ func (s *WSServer) OnTraffic(c gnet.Conn) gnet.Action {
data, action := ws.upgrade()
if len(data) > 0 {
s.unUpgradeConn.Delete(c.RemoteAddr().String())
action = gnet.Action(s.i.OnHandShake(ws, data, s.OnHandShakeFinish))
action = gnet.Action(s.i.OnHandShake(ws))
if action == gnet.None {
if err := ws.Conn.AsyncWrite(data, nil); err != nil {
ws.logger.Errorf("OnTraffic upgrade AsyncWrite err: %v", err)
if err = ws.Close(); err != nil {
ws.logger.Errorf("OnTraffic upgrade Close error: %v", err)
}
}
}
}
return action
}
@@ -174,14 +182,3 @@ func (s *WSServer) OnTick() (delay time.Duration, action gnet.Action) {
return
}
// OnHandShakeFinish 握手完成
func (s *WSServer) OnHandShakeFinish(conn socket.ISocketConn, hsResp []byte) {
ws := conn.(*WSConn)
if err := ws.Conn.AsyncWrite(hsResp, nil); err != nil {
ws.logger.Errorf("OnHandShakeFinish err: %v", err)
if err = ws.Close(); err != nil {
ws.logger.Errorf("OnHandShakeFinish Close error: %v", err)
}
}
}