mirror of
https://github.com/Monibuca/engine.git
synced 2026-04-23 00:07:06 +08:00
支持多语言日志,增加心跳事件广播,兼容一开始缺少 vps 的流
This commit is contained in:
+18
-6
@@ -3,6 +3,7 @@ package config
|
||||
import (
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"reflect"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -43,11 +44,11 @@ func (config Config) CreateElem(eleType reflect.Type) reflect.Value {
|
||||
}
|
||||
|
||||
func (config Config) Unmarshal(s any) {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Error("Unmarshal error:", err)
|
||||
}
|
||||
}()
|
||||
// defer func() {
|
||||
// if err := recover(); err != nil {
|
||||
// log.Error("Unmarshal error:", err)
|
||||
// }
|
||||
// }()
|
||||
if s == nil {
|
||||
return
|
||||
}
|
||||
@@ -106,6 +107,13 @@ func (config Config) Unmarshal(s any) {
|
||||
fv.SetInt(0)
|
||||
} else if d, err := time.ParseDuration(value.String()); err == nil {
|
||||
fv.SetInt(int64(d))
|
||||
} else {
|
||||
if Global.LogLang == "zh" {
|
||||
log.Errorf("%s 无效的时间值: %v 请添加单位(s,m,h,d),例如:100ms, 10s, 4m, 1h", k, value)
|
||||
} else {
|
||||
log.Errorf("%s invalid duration value: %v please add unit (s,m,h,d),eg: 100ms, 10s, 4m, 1h", k, value)
|
||||
}
|
||||
os.Exit(1)
|
||||
}
|
||||
continue
|
||||
}
|
||||
@@ -176,7 +184,11 @@ func (config Config) Merge(source Config) {
|
||||
case Config:
|
||||
m.Merge(v.(Config))
|
||||
default:
|
||||
log.Debug("merge", k, v)
|
||||
if Global.LogLang == "zh" {
|
||||
log.Debug("合并配置", k, ":", v)
|
||||
} else {
|
||||
log.Debug("merge", k, ":", v)
|
||||
}
|
||||
config[k] = v
|
||||
}
|
||||
} else {
|
||||
|
||||
+10
-2
@@ -67,7 +67,11 @@ func (config *HTTP) Listen(ctx context.Context) error {
|
||||
var g errgroup.Group
|
||||
if config.ListenAddrTLS != "" && (config == &Global.HTTP || config.ListenAddrTLS != Global.ListenAddrTLS) {
|
||||
g.Go(func() error {
|
||||
log.Info("🌐 https listen at ", Blink(config.ListenAddrTLS))
|
||||
if Global.LogLang == "zh" {
|
||||
log.Info("🌐 https 监听在 ", Blink(config.ListenAddrTLS))
|
||||
} else {
|
||||
log.Info("🌐 https listen at ", Blink(config.ListenAddrTLS))
|
||||
}
|
||||
var server = http.Server{
|
||||
Addr: config.ListenAddrTLS,
|
||||
ReadTimeout: config.ReadTimeout,
|
||||
@@ -80,7 +84,11 @@ func (config *HTTP) Listen(ctx context.Context) error {
|
||||
}
|
||||
if config.ListenAddr != "" && (config == &Global.HTTP || config.ListenAddr != Global.ListenAddr) {
|
||||
g.Go(func() error {
|
||||
log.Info("🌐 http listen at ", Blink(config.ListenAddr))
|
||||
if Global.LogLang == "zh" {
|
||||
log.Info("🌐 http 监听在 ", Blink(config.ListenAddr))
|
||||
} else {
|
||||
log.Info("🌐 http listen at ", Blink(config.ListenAddr))
|
||||
}
|
||||
var server = http.Server{
|
||||
Addr: config.ListenAddr,
|
||||
ReadTimeout: config.ReadTimeout,
|
||||
|
||||
+15
-3
@@ -58,11 +58,19 @@ func (cfg *Engine) Remote(ctx context.Context) error {
|
||||
var rMessage map[string]any
|
||||
if err = json.Unmarshal(msg[:len(msg)-1], &rMessage); err == nil {
|
||||
if rMessage["code"].(float64) != 0 {
|
||||
log.Error("response from console server ", cfg.Server, " ", rMessage["msg"])
|
||||
if Global.LogLang == "zh" {
|
||||
log.Error("控制台服务器", cfg.Server, "返回错误", rMessage["msg"])
|
||||
} else {
|
||||
log.Error("response from console server ", cfg.Server, " ", rMessage["msg"])
|
||||
}
|
||||
return nil
|
||||
} else {
|
||||
cfg.reportStream = stream
|
||||
log.Info("response from console server ", cfg.Server, " success ", rMessage)
|
||||
if Global.LogLang == "zh" {
|
||||
log.Info("连接到控制台服务器", cfg.Server, "成功", rMessage)
|
||||
} else {
|
||||
log.Info("response from console server ", cfg.Server, " success ", rMessage)
|
||||
}
|
||||
if v, ok := rMessage["enableReport"]; ok {
|
||||
cfg.enableReport = v.(bool)
|
||||
}
|
||||
@@ -85,7 +93,11 @@ func (cfg *Engine) Remote(ctx context.Context) error {
|
||||
|
||||
if err != nil {
|
||||
if wasConnected {
|
||||
log.Error("connect to console server ", cfg.Server, " ", err)
|
||||
if Global.LogLang == "zh" {
|
||||
log.Error("连接到控制台服务器", cfg.Server, "失败", err)
|
||||
} else {
|
||||
log.Error("connect to console server ", cfg.Server, " ", err)
|
||||
}
|
||||
}
|
||||
if ctx.Err() == nil {
|
||||
go cfg.Remote(ctx)
|
||||
|
||||
+5
-1
@@ -42,7 +42,11 @@ func (tcp *TCP) listen(l net.Listener, handler func(*net.TCPConn)) {
|
||||
func (tcp *TCP) Listen(ctx context.Context, plugin TCPPlugin) error {
|
||||
l, err := net.Listen("tcp", tcp.ListenAddr)
|
||||
if err != nil {
|
||||
log.Fatalf("%s: Listen error: %v", tcp.ListenAddr, err)
|
||||
if Global.LogLang == "zh" {
|
||||
log.Fatalf("%s: 监听失败: %v", tcp.ListenAddr, err)
|
||||
} else {
|
||||
log.Fatalf("%s: Listen error: %v", tcp.ListenAddr, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
count := tcp.ListenNum
|
||||
|
||||
+3
-1
@@ -117,10 +117,12 @@ type Engine struct {
|
||||
EnableSubEvent bool `default:"true"` //启用订阅事件,禁用可以提高性能
|
||||
EnableAuth bool `default:"true"` //启用鉴权
|
||||
Console
|
||||
LogLevel string `default:"info"`
|
||||
LogLang string `default:"zh"` //日志语言
|
||||
LogLevel string `default:"info"` //日志级别
|
||||
RTPReorderBufferLen int `default:"50"` //RTP重排序缓冲长度
|
||||
SpeedLimit time.Duration `default:"500ms"` //速度限制最大等待时间
|
||||
EventBusSize int `default:"10"` //事件总线大小
|
||||
PulseInterval time.Duration `default:"5s"` //心跳事件间隔
|
||||
enableReport bool `default:"false"` //启用报告,用于统计和监控
|
||||
reportStream quic.Stream // console server connection
|
||||
instanceId string // instance id 来自console
|
||||
|
||||
Reference in New Issue
Block a user