すでに述べたように、サーバー側のコード、MyGameServer.csのClientPeer.cs要求と応答を照合し、分割しました。治療の先端に応答して、次
まず、応答要求をログインします
主にリクエストクラス遠位ClientPeer.cs OnOperationRequest機能に応じて、終了する前に。管理ハンドラコードに従ってグループから採取した応答関数は、ハンドラ遠位応答を送信しました。
// ClientPeer.cs機能要求受信 // 遠位応答要求 保護 オーバーライド ボイドOnOperationRequest(OperationRequest operationRequest、SendParameters sendParameters)を { MyGameServer.log.Infoが(" クライアント--- ---要求" + operationRequest.OperationCode)を、 //は、最初のクライアントコード(operationRequest.OperationCode)の買収を来た // その後でMyGameServerへのコードの下に登録されたハンドラを取得します。 // ハンドラ私たちの主な機能HandlerDictに登録。 // DictToolツールを使用すると、コードがハンドラ対応され、ここから外値で辞書ができ、キーを渡すために、簡単に私たち自身の定義され たBaseHandlerハンドラDictTool.GetValue = <OperationCode、たBaseHandler> (MyGameServer.Instance.HandlerDict、 (OperationCode)operationRequest.OperationCode); IF(!ハンドラ= NULL ) { // OnOperationRequest対応する対応するハンドラ、直接呼処理ロジック見つける (handler.OnOperationRequestをoperationRequest、sendParameters、この); } 他 { // 。見つからない場合は、私たちのカスタムたDefaultHandlerを返し たBaseHandler defHander = DictTool.GetValue <OperationCode、たBaseHandler> (MyGameServer.Instance.HandlerDict、 OperationCode.Default)。 defHander.OnOperationRequest(operationRequest、sendParameters、この)。 } }
コードログイン要求は、その後、コールLoginHandler.cs OnOperationRequest()メソッド、プロセスはデータを受信し、OperationCode.Login、管理グループから取得LoginHander.csメイン関数に送信されます。
LoginHander.csは、クラスを上陸させました
使用したシステムを、 使用して一般的に、 使用Common.Toos; 使用MyGameServer.Manager; 使用Photon.SocketServer; 名前空間MyGameServer.Hander { パブリック クラスLoginHander:たBaseHandler { パブリックLoginHander() { オペコード = OperationCode.Login; } パブリック オーバーライド ボイドOnOperationRequest(OperationRequest operationRequest、sendParameters sendParameters、)ピアを使用clientpeer { // アップロードされたクライアント側のツールから取得したパラメータ使用して 文字列のユーザー名を= DictTool.GetValue < バイト、オブジェクト >(operationRequest.Parameters、(バイト)ParameterCode.UserName)AS 文字、 文字列のパスワード= DictTool.GetValue < バイト、オブジェクト >(operationRequest.Parameters、(バイト)ParameterCode.Password)AS 文字列; / / データベース管理 のUserManagerのUserManager = 新新のUserManager(); // ユーザー名とパスワードを検出正しい BOOL ISOK = userManager.VerifyModel(ユーザー名、パスワード); //戻るクライアントデータへの OperationResponse応答= 新新OperationResponse(operationRequest.OperationCode); IF (ISOK) { response.ReturnCode =(ショート)ReturnCode.Success; } 他 { response.ReturnCode =(ショート)ReturnCode.Failed; } // 知らせますクライアント応答 peer.SendOperationResponse(応答、sendParameters); } } }
第二に、登録応答クラス
フロントエンドのデータを受信機、および、データベースが名前を持っているかどうかをチェックし、追加しないと、成功を返します
使用して共通の。 使用してCommon.Toosを。 使用してMyGameServer.Managerを。 使用してMyGameServer.Modelを。 使用してPhoton.SocketServerを。 名前空間MyGameServer.Hander { パブリック クラスRegisterHandler:たBaseHandler { パブリックRegisterHandler() { オペコード = OperationCode.Register。 } パブリック オーバーライド ボイドOnOperationRequest(OperationRequest operationRequest、SendParameters sendParameters、ClientPeerピア) { // 获取前端上传的参数 ストリングユーザ名= DictTool.GetValue < バイト、オブジェクト >(operationRequest.Parameters、(バイト)ParameterCode.UserName)として 文字列; 文字列のパスワード= DictTool.GetValue < バイト、オブジェクト >(operationRequest.Parameters、(バイト)ParameterCode.Password)として 文字列; // 返回给前端 OperationResponse応答= 新しいOperationResponse(operationRequest.OperationCode)。 UserManagerのUserManager = 新しいですUserManagerの(); // ユーザ名が既に存在するかどうかを調べる ユーザーにユーザー= userManager.GetByName(ユーザー名); IF(ユーザー== nullの) { // そうでない場合は、ユーザー情報に追加し 、ユーザーを= 新しい新しいユーザー(){ユーザー名ユーザ名=、=パスワードパスワード}; userManager.Add(ユーザー); // リターンコード、成功 response.ReturnCode =(ショート)ReturnCode.Success; } 他 { // リターンコード、障害 response.ReturnCode =(ショート)RETURNCODE。失敗しました; } // 応答でクライアントに peer.SendOperationResponse(応答、sendParameters); } } }
第三に、テストのためのサービスを再起動し、サーバに変更されたファイルをアップロードし、再コンパイルします。