52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
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 =====")
|
|
}
|