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() {
switch slf.network {
case NetworkHttp, NetworkGRPC:
case NetworkHttp, NetworkGRPC, NetworkNone:
default:
if len(slf.connectionReceivePacketEventHandles) == 0 {
log.Warn("Server", log.String("ConnectionReceivePacketEvent", "invalid server, no packets processed"))

View File

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

View File

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