refactor(socket): 使用fmt.Println替换Logger.Error处理panic

修复socket连接关闭和流量处理中的panic恢复机制,
使用fmt.Println直接打印错误信息替代原有的Logger组件。

---

refactor(timer): 移除ants协程池依赖并优化错误处理

移除timer模块中对ants协程池的依赖,改用原生goroutine,
添加panic恢复机制确保任务执行的稳定性。

---

feat(player): 移除CountPlayer函数

删除玩家服务中统计在线玩家数量的功能函数,
该功能
This commit is contained in:
昔念
2026-01-29 01:13:32 +08:00
parent e37d5a4d80
commit 40b4d5955e
4 changed files with 23 additions and 33 deletions

View File

@@ -2,6 +2,7 @@ package socket
import (
"context"
"fmt"
"log"
"os"
"sync/atomic"
@@ -44,7 +45,7 @@ func (s *Server) OnClose(c gnet.Conn, err error) (action gnet.Action) {
if err := recover(); err != nil { // 恢复 panicerr 为 panic 错误值
// 1. 打印错误信息
cool.Logger.Error(context.TODO(), "panic 错误:", err)
fmt.Println(context.TODO(), "panic 错误:", err)
}
}()
@@ -111,7 +112,7 @@ func (s *Server) OnTraffic(c gnet.Conn) (action gnet.Action) {
if err := recover(); err != nil { // 恢复 panicerr 为 panic 错误值
// 1. 打印错误信息
cool.Logger.Error(context.TODO(), "panic 错误:", err)
fmt.Println(context.TODO(), "panic 错误:", err)
}
}()

View File

@@ -6,11 +6,10 @@ package timer
import (
"container/heap"
"context"
"fmt"
"sync"
"sync/atomic"
"time"
"github.com/panjf2000/ants/v2"
)
var _ Timer = (*minHeap)(nil)
@@ -113,8 +112,6 @@ func (m *minHeap) getNewSleepTime() time.Duration {
return timeout
}
var pool, _ = ants.NewPool(-1)
func (m *minHeap) process() {
for {
m.mu.Lock()
@@ -153,11 +150,19 @@ func (m *minHeap) process() {
// 正在运行的任务数加1
atomic.AddInt32(&m.runCount, 1)
pool.Submit(func() {
go func() {
defer func() {
if err := recover(); err != nil { // 恢复 panicerr 为 panic 错误值
// 1. 打印错误信息
fmt.Println(context.TODO(), "panic 错误:", err)
}
}()
callback()
// 对正在运行的任务数减1
atomic.AddInt32(&m.runCount, -1)
})
}()
// 如果堆中没有元素,就等待
if m.minHeaps.Len() == 0 {

View File

@@ -23,16 +23,6 @@ import (
"github.com/panjf2000/gnet/v2"
)
// CountPlayer 统计在线玩家数量
func CountPlayer() int {
count := 0
Mainplayer.Range(func(uint32, *Player) bool {
count++
return true // 继续遍历
})
return count
}
// Mainplayer 全局玩家数据存储映射
var Mainplayer = csmap.New[uint32, *Player]()

View File

@@ -8,29 +8,23 @@ import (
"sync/atomic"
"github.com/jinzhu/copier"
"github.com/panjf2000/ants/v2"
"golang.org/x/time/rate"
)
var mappool, _ = ants.NewPool(-1)
// 向其他人广播,不含自己
// 广播是c为空就不特判发给全体成员广播
func (s *Space) Broadcast(c common.PlayerI, cmd uint32, data any) {
mappool.Submit(func() {
s.User.Range(func(k uint32, v common.PlayerI) (stop bool) {
if c != nil {
if k != c.GetInfo().UserID {
v.SendPackCmd(cmd, data)
}
} else {
s.User.Range(func(k uint32, v common.PlayerI) (stop bool) {
if c != nil {
if k != c.GetInfo().UserID {
v.SendPackCmd(cmd, data)
}
return false
})
}
} else {
v.SendPackCmd(cmd, data)
}
return false
})
}