fix: 修复连接管理器未能正确清理连接的问题。

main v0.5.5
NoahLan 1 year ago
parent 1a30d41e21
commit 6a9a0288ec

@ -35,6 +35,19 @@ func (m *Manager) Store(groupName string, s entity.NetworkEntity) error {
return group.Add(s) return group.Add(s)
} }
func (m *Manager) Remove(groupName string, s entity.NetworkEntity) error {
m.Lock()
delete(m.conns, s.Session().ID())
m.Unlock()
group, ok := m.FindGroup(groupName)
if !ok {
return nil
}
return group.Leave(s)
}
// NewGroup 新增分组,若分组已存在,则返回现有分组 // NewGroup 新增分组,若分组已存在,则返回现有分组
func (m *Manager) NewGroup(name string) *Group { func (m *Manager) NewGroup(name string) *Group {
m.Lock() m.Lock()

@ -3,6 +3,7 @@ package core
import ( import (
"errors" "errors"
"fmt" "fmt"
"git.noahlan.cn/noahlan/nnet/conn"
"git.noahlan.cn/noahlan/nnet/entity" "git.noahlan.cn/noahlan/nnet/entity"
"git.noahlan.cn/noahlan/nnet/packet" "git.noahlan.cn/noahlan/nnet/packet"
"git.noahlan.cn/noahlan/nnet/scheduler" "git.noahlan.cn/noahlan/nnet/scheduler"
@ -268,6 +269,7 @@ func (r *connection) Close() error {
close(r.chDie) close(r.chDie)
scheduler.PushTask(func() { Lifetime.Close(r) }) scheduler.PushTask(func() { Lifetime.Close(r) })
} }
_ = r.ngin.connManager.Remove(conn.DefaultGroupName, r)
r.session.Close() r.session.Close()
return r.conn.Close() return r.conn.Close()

Loading…
Cancel
Save