spark-server/internal/transport/tcp/session/kick.go
2026-09-16 19:08:06 +08:00

32 lines
704 B
Go

package session
import (
"spark-server/internal/transport/tcp/protocol"
)
func (m *memManager) Get(sessionID string) (Session, bool) {
m.mu.RLock()
defer m.mu.RUnlock()
s, ok := m.byID[sessionID]
return s, ok
}
func (m *memManager) kickSameDevice(incoming Session) {
userMap := m.byUser[incoming.UserID()]
if userMap == nil {
return
}
for _, existing := range userMap {
if existing.DeviceID() != incoming.DeviceID() || existing.ID() == incoming.ID() {
continue
}
_ = existing.Send(&Packet{
Command: protocol.CmdKick,
Body: protocol.EncodeKick("replaced by new connection"),
})
_ = existing.Close()
delete(m.byID, existing.ID())
delete(userMap, existing.ID())
}
}