package manage import ( "github.com/aceld/zinx/ziface" "github.com/aceld/zinx/zlog" ) // OnConnectionAdd 当客户端建立连接的时候的hook函数 func OnConnectionAdd(conn ziface.IConnection) { //创建一个user user := NewUser(conn, conn.RemoteAddrString()) //将当前新上线玩家添加到ChannelManager中 m := GetManager(conn.GetName()) if m == nil { zlog.Ins().ErrorF("server internal error in GetManager") conn.Stop() return } m.AddUser(user) //将该连接绑定属性PID conn.SetProperty("UID", user.UID) zlog.Ins().InfoF("====> User uID = %s", user.UID, " arrived ====", "") } // OnConnectionLost 当客户端断开连接的时候的hook函数 func OnConnectionLost(conn ziface.IConnection) { //获取当前连接的PID属性 uID, _ := conn.GetProperty("UID") var userID string if uID != nil { userID = uID.(string) } //根据pID获取对应usr m := GetManager(conn.GetName()) if m == nil { zlog.Ins().ErrorF("server internal error in GetManager") return } user := m.GetUserByPID(userID) //触发玩家下线业务 if user != nil { user.LostConnection(m) } zlog.Ins().InfoF("====> User %s-%s", user.UID, user.UserName, " left =====") }