注释补充

This commit is contained in:
kercylan98 2023-04-19 19:47:19 +08:00
parent 3325e8ff44
commit 938441ee3e
5 changed files with 27 additions and 6 deletions

View File

@ -4,6 +4,5 @@ import "minotaur/server"
func main() {
s := server.New(server.NetworkKcp)
s.Run(":9999")
}

View File

@ -6,6 +6,7 @@ import (
"github.com/xtaci/kcp-go/v5"
)
// newKcpConn 创建一个处理KCP的连接
func newKcpConn(session *kcp.UDPSession) *Conn {
return &Conn{
ip: session.RemoteAddr().String(),
@ -17,6 +18,7 @@ func newKcpConn(session *kcp.UDPSession) *Conn {
}
}
// newKcpConn 创建一个处理GNet的连接
func newGNetConn(conn gnet.Conn) *Conn {
return &Conn{
ip: conn.RemoteAddr().String(),
@ -27,6 +29,7 @@ func newGNetConn(conn gnet.Conn) *Conn {
}
}
// newKcpConn 创建一个处理WebSocket的连接
func newWebsocketConn(ws *websocket.Conn) *Conn {
return &Conn{
ws: ws,
@ -36,6 +39,7 @@ func newWebsocketConn(ws *websocket.Conn) *Conn {
}
}
// Conn 服务器连接
type Conn struct {
ip string
ws *websocket.Conn
@ -44,10 +48,12 @@ type Conn struct {
write func(data []byte) error
}
// Write 向连接中写入数据
func (slf *Conn) Write(data []byte) error {
return slf.write(data)
}
// Close 关闭连接
func (slf *Conn) Close() {
if slf.ws != nil {
slf.ws.Close()

View File

@ -59,7 +59,7 @@ func (slf *event) OnConnectionReceivePacketEvent(conn *Conn, packet []byte) {
}
func (slf *event) check() {
if len(slf.connectionReceivePacketEventHandles) == 0 {
if slf.network != NetworkHttp && len(slf.connectionReceivePacketEventHandles) == 0 {
log.Warn("Server", zap.String("ConnectionReceivePacketEvent", "Invalid server, no packets processed"))
}
}

View File

@ -1,7 +1,14 @@
package server
const (
// MessageTypePacket 数据包消息类型:该类型的数据将被发送到 ConnectionReceivePacketEvent 进行处理
// - *server.Conn
// - []byte
MessageTypePacket MessageType = iota
// MessageTypeError 错误消息类型:根据不同的错误状态,将交由 Server 进行统一处理
// - error
// - server.MessageErrorAction
MessageTypeError
)
@ -11,8 +18,8 @@ var messageNames = map[MessageType]string{
}
const (
MessageErrorActionNone MessageErrorAction = iota
MessageErrorActionShutdown
MessageErrorActionNone MessageErrorAction = iota // 错误消息类型操作:将不会被进行任何特殊处理,仅进行日志输出
MessageErrorActionShutdown // 错误消息类型操作:当接收到该类型的操作时,服务器将执行 Server.Shutdown 函数
)
var messageErrorActionNames = map[MessageErrorAction]string{
@ -21,7 +28,10 @@ var messageErrorActionNames = map[MessageErrorAction]string{
}
type (
MessageType byte
// MessageType 消息类型
MessageType byte
// MessageErrorAction 错误消息类型操作
MessageErrorAction byte
)

View File

@ -16,6 +16,7 @@ import (
"time"
)
// New 根据特定网络类型创建一个服务器
func New(network Network) *Server {
server := &Server{
network: network,
@ -28,6 +29,7 @@ func New(network Network) *Server {
return server
}
// Server 网络服务器
type Server struct {
*event
network Network
@ -37,7 +39,7 @@ type Server struct {
messageChannel chan *message
}
// Run 使用特定网络模式运行服务器
// Run 使用特定地址运行服务器
//
// server.NetworkTCP (addr:":8888")
// server.NetworkTCP4 (addr:":8888")
@ -192,6 +194,7 @@ func (slf *Server) Run(addr string) error {
return nil
}
// Shutdown 停止运行服务器
func (slf *Server) Shutdown(err error) {
close(slf.messageChannel)
if err != nil {
@ -201,6 +204,7 @@ func (slf *Server) Shutdown(err error) {
}
}
// HttpRouter 当网络类型为 NetworkHttp 时将被允许获取路由器进行路由注册,否则将会发生 panic
func (slf *Server) HttpRouter() gin.IRouter {
if slf.httpServer == nil {
panic(ErrNetworkOnlySupportHttp)
@ -208,6 +212,7 @@ func (slf *Server) HttpRouter() gin.IRouter {
return slf.httpServer
}
// PushMessage 向服务器中写入特定类型的消息,需严格遵守消息属性要求
func (slf *Server) PushMessage(messageType MessageType, attrs ...any) {
slf.messageChannel <- &message{
t: messageType,
@ -215,6 +220,7 @@ func (slf *Server) PushMessage(messageType MessageType, attrs ...any) {
}
}
// dispatchMessage 消息分发
func (slf *Server) dispatchMessage(msg *message) {
defer func() {
if err := recover(); err != nil {