/// <summary> /// 处理客户端端的登录请求 /// </summary> /// <param name="operationRequest"></param> /// <param name="sendParameters"></param> /// <param name="peer"></param> public override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, MyPeer peer) { string username = DictTool.GetValue(operationRequest.Parameters, (byte)UserCode.Username) as string; string password = DictTool.GetValue(operationRequest.Parameters, (byte)UserCode.Password) as string; UserManager manager = new UserManager(); bool isSuccess = manager.VerifyUser(username, password); OperationResponse response = new OperationResponse(operationRequest.OperationCode); if (isSuccess) { response.ReturnCode = (short)ReturnCode.Success; peer.username = username; } else { response.ReturnCode = (short)ReturnCode.Failed; } peer.SendOperationResponse(response, sendParameters); }
/// <summary> /// 处理客户端的注册请求 /// </summary> /// <param name="operationRequest"></param> /// <param name="sendParameters"></param> /// <param name="peer"></param> public override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, MyPeer peer) { string username = DictTool.GetValue <byte, object>(operationRequest.Parameters, (byte)UserCode.Username) as string; string password = DictTool.GetValue <byte, object>(operationRequest.Parameters, (byte)UserCode.Password) as string; UserManager manager = new UserManager(); UserInfo user = manager.GetByUsername(username); OperationResponse response = new OperationResponse(operationRequest.OperationCode); if (user == null) { user = new UserInfo() { Username = username, Password = password }; manager.Add(user); response.ReturnCode = (short)ReturnCode.Success; } else { response.ReturnCode = (short)ReturnCode.Failed; } peer.SendOperationResponse(response, sendParameters); }
public override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, MyPeer peer) { switch (operationRequest.OperationCode)//通过OpCode区分请求 { case 1: Dictionary <byte, object> data = operationRequest.Parameters; object intValue; object stringValue; data.TryGetValue(1, out intValue); data.TryGetValue(2, out stringValue); MyGameServer.LogInfo("服务器:得到客户端传来的参数数据是:" + intValue.ToString() + " " + stringValue.ToString()); //向客户端作出响应 OperationResponse opResponse = new OperationResponse(1); //向客户端发送参数 Dictionary <byte, object> data2 = new Dictionary <byte, object>(); data2.Add(1, 300); data2.Add(2, "服务器:给客户端发送参数数据"); opResponse.SetParameters(data2); peer.SendOperationResponse(opResponse, sendParameters); //给客户端一个响应,只能在这里调用,在其它地方无效 ///客户端在没有向服务器端发送请求,但服务器端想通知或发送数据给客户端时,就可以使用SendEvent方法, ///SendEvent方法可以在服务器任何地方调用。 //EventData ed = new EventData(1); //ed.Parameters = data2; //SendEvent(ed, new SendParameters()); break; case 2: break; default: break; } }