feat: server.Server 默认开启数据包大小警告,可通过 server.WithPacketWarnSize 关闭或调整警告大小,默认为 1MB
This commit is contained in:
parent
6469c473e7
commit
173dd11d4d
|
@ -296,6 +296,9 @@ func (slf *Conn) init() {
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
slf.loop = writeloop.NewWriteLoop[*connPacket](slf.pool, func(data *connPacket) error {
|
slf.loop = writeloop.NewWriteLoop[*connPacket](slf.pool, func(data *connPacket) error {
|
||||||
|
if slf.server.runtime.packetWarnSize > 0 && len(data.packet) > slf.server.runtime.packetWarnSize {
|
||||||
|
log.Warn("Conn.Write", log.String("State", "PacketWarn"), log.String("Reason", "PacketSize"), log.String("ID", slf.GetID()), log.Int("PacketSize", len(data.packet)))
|
||||||
|
}
|
||||||
var err error
|
var err error
|
||||||
if slf.delay > 0 || slf.fluctuation > 0 {
|
if slf.delay > 0 || slf.fluctuation > 0 {
|
||||||
time.Sleep(random.Duration(int64(slf.delay-slf.fluctuation), int64(slf.delay+slf.fluctuation)))
|
time.Sleep(random.Duration(int64(slf.delay-slf.fluctuation), int64(slf.delay+slf.fluctuation)))
|
||||||
|
|
|
@ -25,6 +25,7 @@ const (
|
||||||
DefaultMessageBufferSize = 1024
|
DefaultMessageBufferSize = 1024
|
||||||
DefaultAsyncPoolSize = 256
|
DefaultAsyncPoolSize = 256
|
||||||
DefaultWebsocketReadDeadline = 30 * time.Second
|
DefaultWebsocketReadDeadline = 30 * time.Second
|
||||||
|
DefaultPacketWarnSize = 1024 * 1024 * 1 // 1MB
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -239,6 +239,9 @@ func (slf *event) RegConnectionReceivePacketEvent(handle ConnectionReceivePacket
|
||||||
}
|
}
|
||||||
|
|
||||||
func (slf *event) OnConnectionReceivePacketEvent(conn *Conn, packet []byte) {
|
func (slf *event) OnConnectionReceivePacketEvent(conn *Conn, packet []byte) {
|
||||||
|
if slf.Server.runtime.packetWarnSize > 0 && len(packet) > slf.Server.runtime.packetWarnSize {
|
||||||
|
log.Warn("Server", log.String("OnConnectionReceivePacketEvent", fmt.Sprintf("packet size %d > %d", len(packet), slf.Server.runtime.packetWarnSize)))
|
||||||
|
}
|
||||||
slf.connectionReceivePacketEventHandles.RangeValue(func(index int, value ConnectionReceivePacketEventHandle) bool {
|
slf.connectionReceivePacketEventHandles.RangeValue(func(index int, value ConnectionReceivePacketEventHandle) bool {
|
||||||
value(slf.Server, conn, packet)
|
value(slf.Server, conn, packet)
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -41,6 +41,21 @@ type runtime struct {
|
||||||
websocketWriteCompression bool // websocket写入压缩
|
websocketWriteCompression bool // websocket写入压缩
|
||||||
limitLife time.Duration // 限制最大生命周期
|
limitLife time.Duration // 限制最大生命周期
|
||||||
shuntMatcher func(conn *Conn) string // 分流匹配器
|
shuntMatcher func(conn *Conn) string // 分流匹配器
|
||||||
|
packetWarnSize int // 数据包大小警告
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithPacketWarnSize 通过数据包大小警告的方式创建服务器,当数据包大小超过指定大小时,将会输出 WARN 类型的日志
|
||||||
|
// - 默认值为 DefaultPacketWarnSize
|
||||||
|
// - 当 size <= 0 时,表示不设置警告
|
||||||
|
func WithPacketWarnSize(size int) Option {
|
||||||
|
return func(srv *Server) {
|
||||||
|
if size <= 0 {
|
||||||
|
srv.packetWarnSize = 0
|
||||||
|
log.Info("WithPacketWarnSize", log.String("State", "Ignore"), log.String("Reason", "size <= 0"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
srv.packetWarnSize = size
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithShunt 通过连接数据包分流的方式创建服务器
|
// WithShunt 通过连接数据包分流的方式创建服务器
|
||||||
|
|
Loading…
Reference in New Issue