fix: kcp 协议内部日志细节

This commit is contained in:
2026-03-25 15:09:32 +08:00
parent be013b701b
commit 665a908421
15 changed files with 1117 additions and 42 deletions

View File

@@ -3,6 +3,7 @@ package server
import (
"fmt"
"sync"
"time"
kcp "github.com/xtaci/kcp-go/v5"
@@ -21,11 +22,21 @@ func WithKCPLogger(logger latencylog.Logger) KCPOption {
}
}
// WithKCPSessionStatsLogger 为 KCP hub 注入会话统计日志器。
func WithKCPSessionStatsLogger(logger transport.KCPSessionStatsLogger, interval time.Duration) KCPOption {
return func(hub *KCPHub) {
hub.sessionStatsLogger = logger
hub.sessionStatsInterval = interval
}
}
// KCPHub 管理已注册 peer 的 KCP 会话,并负责在它们之间转发消息。
type KCPHub struct {
mu sync.RWMutex
peers map[string]*transport.KCPConn
logger latencylog.Logger
mu sync.RWMutex
peers map[string]*transport.KCPConn
logger latencylog.Logger
sessionStatsLogger transport.KCPSessionStatsLogger
sessionStatsInterval time.Duration
}
// NewKCPHub 创建一个空的 KCP 连接中心。
@@ -57,6 +68,7 @@ func (h *KCPHub) ServeSession(session *kcp.UDPSession) error {
conn, err := transport.NewKCPConn(
session,
transport.WithKCPLogger(h.logger, latencylog.NodeRoleServer, "hub"),
transport.WithKCPSessionStatsLogger(h.sessionStatsLogger, h.sessionStatsInterval),
)
if err != nil {
_ = session.Close()