注释补充

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() { func main() {
s := server.New(server.NetworkKcp) s := server.New(server.NetworkKcp)
s.Run(":9999") s.Run(":9999")
} }

View File

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

View File

@ -59,7 +59,7 @@ func (slf *event) OnConnectionReceivePacketEvent(conn *Conn, packet []byte) {
} }
func (slf *event) check() { 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")) log.Warn("Server", zap.String("ConnectionReceivePacketEvent", "Invalid server, no packets processed"))
} }
} }

View File

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

View File

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