コード例 #1
0
ファイル: user.go プロジェクト: yicaoyimuys/GoGameServer
//用户DB登录返回
func (this UserModule) UserLoginHandle(session *link.Session, userName string, userID uint64) {
	if userID == 0 {
		gameProxy.SendLoginResult(session, 0)
	} else {
		//登录成功处理
		success := this.LoginSuccess(session, userName, userID, 0)
		if success {
			//登录成功后处理
			this.dealLoginSuccess(session, userName, userID)
		} else {
			gameProxy.SendLoginResult(session, 0)
		}
	}
}
コード例 #2
0
ファイル: user.go プロジェクト: yicaoyimuys/GoGameServer
//登录成功后处理
func (this UserModule) dealLoginSuccess(session *link.Session, userName string, userID uint64) {
	//通知GameServer登录成功
	transferProxy.SetClientLoginSuccess(userName, userID, session)
	//发送登录成功消息
	gameProxy.SendLoginResult(session, userID)
	//用户下线时处理
	session.AddCloseCallback(session, func() {
		//记录用户下线Log
		logProxy.UserOffLine(userID)
	})
	//记录用户登录Log
	logProxy.UserLogin(userID)
}
コード例 #3
0
ファイル: user.go プロジェクト: yicaoyimuys/GoGameServer
//登录
func (this UserModule) Login(userName string, session *link.Session) {
	onlineUser := module.Cache.GetOnlineUserByUserName(userName)
	if onlineUser != nil {
		if onlineUser.Session.Id() != session.Id() {
			//当前在线,但是连接不同,其他客户端连接,需通知当前客户端下线
			gameProxy.SendOtherLogin(onlineUser.Session)
			//替换Session
			module.Cache.RemoveOnlineUser(onlineUser.Session.Id())
			//登录成功处理
			success := this.LoginSuccess(session, onlineUser.UserName, onlineUser.UserID, 0)
			if success {
				//登录成功后处理
				this.dealLoginSuccess(session, userName, onlineUser.UserID)
			} else {
				gameProxy.SendLoginResult(session, 0)
			}
		}
	} else {
		dbProxy.UserLogin(session.Id(), userName)
	}
}