refactor: 优化 server 包消息日志,移除 server.Conn.Reuse 函数(不合理)
This commit is contained in:
parent
5024022366
commit
376ff779e1
|
@ -143,21 +143,6 @@ func (slf *Conn) IsEmpty() bool {
|
|||
return slf.ws == nil && slf.gn == nil && slf.kcp == nil && slf.gw == nil
|
||||
}
|
||||
|
||||
// Reuse 重用连接
|
||||
// - 重用连接时,会将当前连接的数据复制到新连接中
|
||||
// - 通常在于连接断开后,重新连接时使用
|
||||
func (slf *Conn) Reuse(conn *Conn) {
|
||||
slf.Close()
|
||||
slf.remoteAddr = conn.remoteAddr
|
||||
slf.ip = conn.ip
|
||||
slf.ws = conn.ws
|
||||
slf.gn = conn.gn
|
||||
slf.kcp = conn.kcp
|
||||
slf.data = conn.data
|
||||
slf.packetPool = conn.packetPool
|
||||
slf.packets = conn.packets
|
||||
}
|
||||
|
||||
// RemoteAddr 获取远程地址
|
||||
func (slf *Conn) RemoteAddr() net.Addr {
|
||||
return slf.remoteAddr
|
||||
|
|
|
@ -2,9 +2,9 @@ package server
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/kercylan98/minotaur/utils/hash"
|
||||
"github.com/kercylan98/minotaur/utils/super"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
|
@ -85,6 +85,22 @@ func (slf *Message) MessageType() MessageType {
|
|||
return slf.t
|
||||
}
|
||||
|
||||
// AttrsString 返回消息属性的字符串表示
|
||||
func (slf *Message) AttrsString() string {
|
||||
var attrs = make([]any, 0, len(slf.attrs))
|
||||
for _, attr := range slf.attrs {
|
||||
if tof := reflect.TypeOf(attr); tof.Kind() == reflect.Func {
|
||||
attrs = append(attrs, tof.String())
|
||||
continue
|
||||
}
|
||||
attrs = append(attrs, attr)
|
||||
}
|
||||
if len(attrs) == 0 {
|
||||
return "NoneAttr"
|
||||
}
|
||||
return string(super.MarshalJSON(attrs))
|
||||
}
|
||||
|
||||
// String 返回消息的字符串表示
|
||||
func (slf *Message) String() string {
|
||||
var attrs = make([]any, 0, len(slf.attrs))
|
||||
|
@ -94,22 +110,8 @@ func (slf *Message) String() string {
|
|||
}
|
||||
attrs = append(attrs, attr)
|
||||
}
|
||||
var s string
|
||||
switch slf.t {
|
||||
case MessageTypePacket:
|
||||
if len(attrs) > 1 {
|
||||
s = messagePacketVisualization(attrs[1].([]byte))
|
||||
}
|
||||
default:
|
||||
if len(slf.attrs) == 0 {
|
||||
s = "NoneAttr"
|
||||
} else {
|
||||
raw, _ := json.Marshal(attrs)
|
||||
s = string(raw)
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Sprintf("[%s] %s", slf.t, s)
|
||||
return fmt.Sprintf("[%s] %s", slf.t, slf.AttrsString())
|
||||
}
|
||||
|
||||
// String 返回消息类型的字符串表示
|
||||
|
|
|
@ -623,7 +623,7 @@ func (slf *Server) dispatchMessage(msg *Message) {
|
|||
defer func(msg *Message) {
|
||||
if err := recover(); err != nil {
|
||||
stack := string(debug.Stack())
|
||||
log.Error("Server", log.String("MessageType", messageNames[msg.t]), log.Any("MessageAttrs", msg.attrs), log.Any("error", err), log.String("stack", stack))
|
||||
log.Error("Server", log.String("MessageType", messageNames[msg.t]), log.Any("MessageAttrs", msg.AttrsString()), log.Any("error", err), log.String("stack", stack))
|
||||
fmt.Println(stack)
|
||||
if e, ok := err.(error); ok {
|
||||
slf.OnMessageErrorEvent(msg, e)
|
||||
|
|
|
@ -21,6 +21,14 @@ func TestNew(t *testing.T) {
|
|||
}
|
||||
return true
|
||||
})
|
||||
var current *server.Conn
|
||||
srv.RegConnectionOpenedEvent(func(srv *server.Server, conn *server.Conn) {
|
||||
if current != nil {
|
||||
current.Reuse(conn)
|
||||
} else {
|
||||
current = conn
|
||||
}
|
||||
})
|
||||
srv.RegConnectionReceivePacketEvent(func(srv *server.Server, conn *server.Conn, packet []byte) {
|
||||
conn.Write(packet)
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue