欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

05-ET框架的前后端通信1-創(chuàng)新互聯(lián)

TIPS:
本系列貼僅用于博主學(xué)習(xí)ET框架的記錄

博興ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

文章目錄
  • 前言
  • 一、ET框架的前后端如何進(jìn)行通信的?
  • 二、前后端的通信使用
    • 1.編寫protobuf消息體
    • 2.編寫C#代碼
    • 3.運(yùn)行結(jié)果
  • 總結(jié)


前言

學(xué)習(xí)ET框架的第一種前后端通信。IRequest和IResponse


一、ET框架的前后端如何進(jìn)行通信的?

ET框架使用protobuf進(jìn)行前后端的通信。

Protobuf即Protocol Buffers,是Google公司開發(fā)的一種跨語言和平臺的序列化數(shù)據(jù)結(jié)構(gòu)的方式,是一個靈活的、高效的用于序列化數(shù)據(jù)的協(xié)議。與XML和JSON格式相比,Protobuf更小、更快、更便捷。

在ET框架的目錄下有一個Proto文件夾,文件夾中有三個Proto文件(消息體都寫在這三個文件里):
在這里插入圖片描述
分別為:

InnerMessage.proto:用于服務(wù)器之間的通信。

MongoMessage.proto:也用于服務(wù)器之間的通信,不過參數(shù)可以帶Entity實(shí)體。

OuterMessage.proto:用于服務(wù)器和客戶端之間的通信。

二、前后端的通信使用 1.編寫protobuf消息體

在OuterMessage.proto文件中編寫代碼:

//ResponseType S2C_TestProtoResponse
message C2S_TestProtoRequest // IRequest
{
	int32 RpcId       = 90;
	string RequestText = 1;
}

message S2C_TestProtoResponse // IResponse
{
	int32 RpcId = 90;
	int32 Error = 91;
	string Message = 92;

	string ResponseText = 1;
}

ET框架的前后端通信擁有幾種方式,這篇先記錄IRequest、IResponse。

代碼命名規(guī)為:
C2S:代表是從Client to Server的一條消息,后面接著//IRequest則表明是一條請求消息,有請求則會有響應(yīng),在上方標(biāo)識ResponseType是S2C。如果是一條請求的消息體,則以下字段是必須的,且值一定要等于90。:

int32 RpcId = 90;

S2C:代表從Server to Client的一條消息,后面接著//IResponse則表明是一條響應(yīng)消息體。如果是一條響應(yīng)的消息體,則以下的字段是必須的,且值為90-92:

int32 RpcId = 90;
int32 Error = 91;
string Message = 92;

其他自定義的值則從1開始,但不能重復(fù)。最后保存文件回到Proto文件下雙擊bat文件會在代碼里生成對應(yīng)的代碼。

2.編寫C#代碼

(1)找到LoginHelper.cs文件下的Login方法開始編寫,先注釋掉原先的代碼:

using System;


namespace ET
{public static class LoginHelper
    {public static async ETTask Login(Scene zoneScene, string address, string account, string password)
        {try
            {S2C_TestProtoResponse s2CTestProtoResponse = null;
                Session session = null;
                try
                {//創(chuàng)建一個session鏈接
                    session = zoneScene.GetComponent().Create(NetworkHelper.ToIPEndPoint(address));
                    //給服務(wù)器發(fā)送一條消息并拿到服務(wù)器的響應(yīng)消息
                    s2CTestProtoResponse =
                            (S2C_TestProtoResponse) await session.Call(new C2S_TestProtoRequest() {RequestText = "Hello server, i am client" });
                    Log.Debug(s2CTestProtoResponse.ResponseText);//輸出服務(wù)器的響應(yīng)消息
                }
                finally
                {session?.Dispose();//關(guān)閉鏈接
                }
            }
            catch (Exception e)
            {Console.WriteLine(e);
                throw;
            }
            // try
            // {//     // 創(chuàng)建一個ETModel層的Session
            //     R2C_Login r2CLogin;
            //     Session session = null;
            //     try
            //     {//         session = zoneScene.GetComponent().Create(NetworkHelper.ToIPEndPoint(address));
            //         {//             r2CLogin = (R2C_Login) await session.Call(new C2R_Login() { Account = account, Password = password });
            //         }
            //     }
            //     finally
            //     {//         session?.Dispose();
            //     }
            //
            //     // 創(chuàng)建一個gate Session,并且保存到SessionComponent中
            //     Session gateSession = zoneScene.GetComponent().Create(NetworkHelper.ToIPEndPoint(r2CLogin.Address));
            //     gateSession.AddComponent();
            //     zoneScene.AddComponent().Session = gateSession;
				        //
            //     G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(
            //         new C2G_LoginGate() { Key = r2CLogin.Key, GateId = r2CLogin.GateId});
            //
            //     Log.Debug("登陸gate成功!");
            //
            //     Game.EventSystem.PublishAsync(new EventType.LoginFinish() {ZoneScene = zoneScene}).Coroutine();
            // }
            // catch (Exception e)
            // {//     Log.Error(e);
            // }
        }
}

(2)編寫處理消息的類,在Server/Server.Hotfix/Demo下創(chuàng)建一個Login文件夾,并且新建一個C2S_TestProtoRequestHandler.cs類。用來說明該類是處理C2S_TestProtoRequest的消息請求的。

using System;

namespace ET
{public class C2S_TestProtoRequestHandler : AMRpcHandler{protected override async ETTask Run(Session session, C2S_TestProtoRequest request, S2C_TestProtoResponse response, Action reply)
        {Log.Debug(request.RequestText);//輸出客戶端請求的消息

            //編輯響應(yīng)消息
            response.ResponseText = "Copy that client, i am server";

            reply();//reply可以當(dāng)作把消息發(fā)出去

            await ETTask.CompletedTask;//由于方法是異步的,這個就是可以消除async帶來的報(bào)錯
        }
    }
}

對于IRequest的消息處理類要繼承AMRpcHandler類,兩個參數(shù)分別為兩個對應(yīng)的消息體,同時實(shí)現(xiàn)Run方法。

3.運(yùn)行結(jié)果

保存代碼重新編譯一下代碼,通過后運(yùn)行服務(wù)器端,并且回到Unity編輯器按下F5等待編譯完成后運(yùn)行游戲,點(diǎn)擊登錄按鈕即可發(fā)送消息。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
這時候就可以看到有兩條消息體,一條是client發(fā)給server的,一條是server響應(yīng)給client的,同時輸出了服務(wù)器端響應(yīng)的消息,而客戶端請求的消息則要到ET文件夾下的Logs文件夾中查看Debug日志。
在這里插入圖片描述


總結(jié)

簡單學(xué)習(xí)一下ET前后端的通信的使用。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站欄目:05-ET框架的前后端通信1-創(chuàng)新互聯(lián)
標(biāo)題URL:http://aaarwkj.com/article22/dohcjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)App開發(fā)、網(wǎng)站策劃網(wǎng)站改版、虛擬主機(jī)網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
在线观看成人激情视频| 国产在线精彩视频自拍| 亚洲成人黄色在线网站| 人妻鲁丝一区二区三区| 蜜桃臀内射一区二区三区| 熟妇人妻精品一区二区| 久久亚洲综合精品人妻| 日本一区二区三区高清在线| 精品久久久噜噜噜久久| 亚洲国产精品久久久久国产精品 | 韩国日本午夜福利在线| 人妻中文字幕日韩av| 久热视频这里只有精品99| 欧美亚洲另类不卡在线| 97青青草免费在线视频| 欧美日本精品在线观看| 欧美精品一区二区三区狠狠| 日韩人妻精品中文字幕专区不卡| 久久re这里只有精品6| 全国精品免费视频久久久| 侵犯人妻中文字幕一区二区| 亚洲三级黄片在线观看| 国产传媒网站在线观看| 久久热久久热在线视频| 欧美日韩精品亚洲成人精品| 国产在线高清精品二区| 高清一区二区三区不卡视频| 亚洲老司机深夜福利| 91福利免费在线看| 九九热九九热九九热九| 99精品久久久中文字幕日本| 国产一区 亚洲精品| 丰满人妻被黑人猛烈进入| 91九色蝌蚪国产欧美亚洲| 亚洲av男人电影天堂| 亚洲欧美日韩另类在线视频| 国内揄拍国内精品对久久| 久久精品国产亚洲av品| 美女视频黄的日本的日进去了| 亚洲精品一区二区三区高清| 亚洲午夜一区二区精品 |