06-ET框架的前后端通信2-创新互联
TIPS:
创新互联专注于抚松企业网站建设,响应式网站,商城网站建设。抚松网站建设公司,为抚松等地区提供建站服务。全流程定制开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
本系列贴仅用于博主学习ET框架的记录
文章目录
- 前言
- 一、IMessage是什么?
- 二、使用步骤
- 1.编写proto消息体
- 2.编写C#代码
- 3.运行结果
- 总结
前言
这篇文章记录ET框架的第二种前后端通信:IMessage
一、IMessage是什么?
二、使用步骤 1.编写proto消息体在ET框架中的前后端通信的IMessage类型的通信是不需要回复的一种消息请求方式。
例如某个玩家率先到达了某个等级的阈值,之后Server对客户端下发一个消息,说:您率先到达90级。这种不需要响应的消息就用IMessage来做。(应该可以这么理解)
在OuterMessage.proto文件中编写代码:
message C2S_TestMessage // IMessage
{
string HelloByClient = 1;
}
message S2C_TestMessage // IMessage
{
string HelloByServer = 1;
}
代码命名规为:
C2S:代表是从Client to Server的一条消息,后面接着//IMessage则表明是一条普通消息,不需要回复。同理S2C也是一个道理。
C2S_TestMessage:这是从客户端发送一条消息给服务器的一条消息。
S2C_TestMessage:这是从服务器主动下推一条消息给客户端。
自定义的值则从1开始,但不能重复。最后保存文件回到Proto文件下双击bat文件会在代码里生成对应的代码。
2.编写C#代码(1)找到LoginHelper.cs文件下的Login方法开始编写,先注释掉原先的代码:
代码如下(示例):LoginHelper
using System;
namespace ET
{public static class LoginHelper
{public static async ETTask Login(Scene zoneScene, string address, string account, string password)
{Session session = null;//定义一个与服务器端所链接的session;用于通信
try
{session = zoneScene.GetComponent().Create(NetworkHelper.ToIPEndPoint(address));
//客户端发送一条普通消息给服务器
session.Send(new C2S_TestMessage() {HelloByClient = "Hello server, i am client" });
//这里消息发送完之后如果不等待一下,session就会立马断开,
//这样客户端就收不到服务器端主动下推的一条消息了,
//所以为了测试这里等待一秒后才断开session
await TimerComponent.Instance.WaitAsync(1000);
}
catch (Exception e)
{session?.Dispose();//销毁session断开链接
Console.WriteLine(e);
throw;
}
finally
{session?.Dispose();
}
await ETTask.CompletedTask;
}
}
}
(2)编写处理消息的类,在Server/Server.Hotfix/Demo下创建一个Test文件夹,并且新建一个C2S_TestMessageHandler.cs类。用来说明该类是处理C2S_TestMessage的消息的。
代码如下(示例):C2S_TestMessageHandler
namespace ET
{public class C2S_TestMessageHandler: AMHandler{protected override void Run(Session session, C2S_TestMessage message)
{Log.Debug(message.HelloByClient);//输出客户端发送过来的消息
//这时候在这里主动推送一条消息给客户端
session.Send(new S2C_TestMessage() {HelloByServer = "恭喜你率先达到封印等级--------3天后等级封印突破!!!" });
}
}
}
由于这是一条普通消息,没有RpcId,所以继承的是AMHandler,而不是AMRpcHandler。类型是所处理的消息类。
(3)这时候服务器下推一条消息给客户端,客户端也要编写对应的消息处理类。在Client/Unity.Hotfix/Codes/Hotfix/Demo文件夹下创建一个Test文件夹,之后在Test文件夹下创建一个S2C_TestMessageHandler.cs类。用来说明该类是处理S2C_TestMessage的消息的。
代码如下(示例):S2C_TestMessageHandler
namespace ET
{public class S2C_TestMessageHandler: AMHandler{protected override void Run(Session session, S2C_TestMessage message)
{Log.Debug(message.HelloByServer);//输出服务器下推的一条消息。
}
}
}
3.运行结果保存代码重新编译一下代码,通过后运行服务器端,并且回到Unity编辑器按下F5等待编译完成后运行游戏,点击登录按钮即可发送消息。
这时候当点击登录按钮的时候就会发送消息给服务器端,同时也将收到服务器端下推的一条普通消息,一条是client发给server的,一条是server下推给client的,同时输出了服务器端下推的消息,而客户端发送的消息则要到ET文件夹下的Logs文件夹中查看Debug日志。
总结
简单学习一下ET前后端的通信的使用。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:06-ET框架的前后端通信2-创新互联
网站地址:http://abwzjs.com/article/jioco.html