登録とログイン(4)---登録し、ログインサーバの応答の光子Serverの実装

すでに述べたように、サーバー側のコード、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); 
        } 
    } 
}
コードの表示

 

第三に、テストのためのサービスを再起動し、サーバに変更されたファイルをアップロードし、再コンパイルします。

  

 

 

 

   

 

 

ビデオを見る:https://www.bilibili.com/video/av35109390/?p=86

おすすめ

転載: www.cnblogs.com/cj8988/p/11691331.html