feat: server 新增 NetworkNone 网络类型,该模式下不监听任何网络端口,仅开启消息队列,适用于纯粹的跨服服务器等情况

This commit is contained in:
kercylan98 2023-08-17 09:44:51 +08:00
parent 7af513a762
commit dcfb3da534
3 changed files with 28 additions and 11 deletions

View File

@ -314,7 +314,7 @@ func (slf *event) OnConnectionPacketPreprocessEvent(conn *Conn, packet []byte, u
func (slf *event) check() { func (slf *event) check() {
switch slf.network { switch slf.network {
case NetworkHttp, NetworkGRPC: case NetworkHttp, NetworkGRPC, NetworkNone:
default: default:
if len(slf.connectionReceivePacketEventHandles) == 0 { if len(slf.connectionReceivePacketEventHandles) == 0 {
log.Warn("Server", log.String("ConnectionReceivePacketEvent", "invalid server, no packets processed")) log.Warn("Server", log.String("ConnectionReceivePacketEvent", "invalid server, no packets processed"))

View File

@ -3,6 +3,8 @@ package server
type Network string type Network string
const ( const (
// NetworkNone 该模式下不监听任何网络端口,仅开启消息队列,适用于纯粹的跨服服务器等情况
NetworkNone Network = "none"
NetworkTcp Network = "tcp" NetworkTcp Network = "tcp"
NetworkTcp4 Network = "tcp4" NetworkTcp4 Network = "tcp4"
NetworkTcp6 Network = "tcp6" NetworkTcp6 Network = "tcp6"

View File

@ -7,6 +7,7 @@ import (
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"github.com/kercylan98/minotaur/utils/concurrent" "github.com/kercylan98/minotaur/utils/concurrent"
"github.com/kercylan98/minotaur/utils/log" "github.com/kercylan98/minotaur/utils/log"
"github.com/kercylan98/minotaur/utils/str"
"github.com/kercylan98/minotaur/utils/super" "github.com/kercylan98/minotaur/utils/super"
"github.com/kercylan98/minotaur/utils/timer" "github.com/kercylan98/minotaur/utils/timer"
"github.com/kercylan98/minotaur/utils/times" "github.com/kercylan98/minotaur/utils/times"
@ -109,7 +110,11 @@ type Server struct {
// server.NetworkHttp (addr:":8888") // server.NetworkHttp (addr:":8888")
// server.NetworkWebsocket (addr:":8888/ws") // server.NetworkWebsocket (addr:":8888/ws")
// server.NetworkKcp (addr:":8888") // server.NetworkKcp (addr:":8888")
// server.NetworkNone (addr:"")
func (slf *Server) Run(addr string) error { func (slf *Server) Run(addr string) error {
if slf.network == NetworkNone {
addr = "-"
}
if slf.event == nil { if slf.event == nil {
return ErrConstructed return ErrConstructed
} }
@ -143,6 +148,11 @@ func (slf *Server) Run(addr string) error {
} }
switch slf.network { switch slf.network {
case NetworkNone:
go connectionInitHandle(func() {
slf.isRunning = true
slf.OnStartBeforeEvent()
})
case NetworkGRPC: case NetworkGRPC:
listener, err := net.Listen(string(NetworkTcp), slf.addr) listener, err := net.Listen(string(NetworkTcp), slf.addr)
if err != nil { if err != nil {
@ -346,6 +356,11 @@ func (slf *Server) Run(addr string) error {
return nil return nil
} }
// RunNone 是 Run("") 的简写,仅适用于运行 NetworkNone 服务器
func (slf *Server) RunNone() error {
return slf.Run(str.None)
}
// GetOnlineCount 获取在线人数 // GetOnlineCount 获取在线人数
func (slf *Server) GetOnlineCount() int { func (slf *Server) GetOnlineCount() int {
return slf.online.Size() return slf.online.Size()