服务器响应登录,Photon Server 实现注册与登录(四) --- 服务端响应登陆和注册

前面已经整理过了服务端代码,MyGameServer.cs 和 ClientPeer.cs 对请求和响应进行了拆分。接下来处理对前端的响应

一、响应登陆请求

之前整理中,响应前端请求主要在类ClientPeer.cs 中 OnOperationRequest 函数。该函数会根据前端传递的code从Handler管理组中取出响应的Handler进行响应。

//ClientPeer.cs 中接收请求的函数//响应前端请求

protected override voidOnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)

{

MyGameServer.log.Info("Client---请求了---" +operationRequest.OperationCode);//首先获取客户端传来的code (operationRequest.OperationCode)//然后根据code 去 MyGameServer中获取注册的Handler。//Handler我们注册到了主函数HandlerDict中。//DictTool工具类是我们自己定义的,方便传入key,就能从Dict中取值,这里取出的是code相对应的handler

BaseHandler handler= DictTool.GetValue(MyGameServer.Instance.HandlerDict,

(OperationCode) operationRequest.OperationCode);if (handler != null)

{//找到相应的Handler,直接调用 OnOperationRequest 进行相应逻辑处理

handler.OnOperationRequest(operationRequest,sendParameters,this);

}else{//如果没有找到,返回我们自定义的 DefaultHandler.

BaseHandler defHander = DictTool.GetValue(MyGameServer.Instance.HandlerDict,

OperationCode.Default);

defHander.OnOperationRequest(operationRequest,sendParameters,this);

}

}

登陆请求发送的code是 OperationCode.Login,主函数会从管理组中获取 LoginHander.cs ,然后调用LoginHandler.cs 的 OnOperationRequest()方法进行接收数据并处理。

LoginHander.cs 登陆类

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

usingSystem;usingCommon;usingCommon.Toos;usingMyGameServer.Manager;usingPhoton.SocketServer;namespaceMyGameServer.Hander

{public classLoginHander:BaseHandler

{publicLoginHander()

{

OpCode=OperationCode.Login;

}public override voidOnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, ClientPeer peer)

{//利用工具类从获取客户端上传的参数

string username =DictTool.GetValue(operationRequest.Parameters, (byte) ParameterCode.UserName) as string;string password =DictTool.GetValue(operationRequest.Parameters, (byte) ParameterCode.Password) as string;//数据库管理类

UserManager userManager = newUserManager();//检测用户名和密码是否正确

bool isOk =userManager.VerifyModel(username, password);//返回给客户端数据

OperationResponse response = newOperationResponse(operationRequest.OperationCode);if(isOk)

{

response.ReturnCode= (short)ReturnCode.Success;

}else{

response.ReturnCode= (short)ReturnCode.Failed;

}//给客户端响应

peer.SendOperationResponse(response, sendParameters);

}

}

}

View Code

二、注册响应类

接收前端数据,然后查询数据库是否有从名的,没有就添加,并返回成功

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

usingCommon;usingCommon.Toos;usingMyGameServer.Manager;usingMyGameServer.Model;usingPhoton.SocketServer;namespaceMyGameServer.Hander

{public classRegisterHandler:BaseHandler

{publicRegisterHandler()

{

OpCode=OperationCode.Register;

}public override voidOnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, ClientPeer peer)

{//获取前端上传的参数

string username =DictTool.GetValue(operationRequest.Parameters, (byte) ParameterCode.UserName) as string;string password =DictTool.GetValue(operationRequest.Parameters, (byte) ParameterCode.Password) as string;//返回给前端

OperationResponse response = newOperationResponse(operationRequest.OperationCode);

UserManager userManager= newUserManager();//查找是否已经存在该用户名

User user =userManager.GetByName(username);if (user == null)

{//如果不存在,则添加该用户信息

user = new User(){UserName = username,Password =password};

userManager.Add(user);//返回码,成功

response.ReturnCode = (short) ReturnCode.Success;

}else{//返回码,失败

response.ReturnCode = (short) ReturnCode.Failed;

}//给客户端响应

peer.SendOperationResponse(response, sendParameters);

}

}

}

View Code

三、重新编译,上传修改文件到服务端,重新启动服务进行测试。

e053b588433361823757487a05ef5dbe.png  

9345418d32c6b14dbd200cfe141e8129.png

22346a204cec362b18b2b5fdae251754.png  

98e32c2fcf434cd70c45d6d8af04b7b2.png

原文:https://www.cnblogs.com/cj8988/p/11691331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值