文章目录
- 一、消息在的定义:
- 二、客户端消息的发送:
- 三、服务器消息的处理:
- 四、查看结果
一、消息在的定义:
ET消息主要分为两类,一个种是普通消息,一种时通过Gate网关转发的消息叫Local消息
这里我们编写客户端与服务器端通讯消息
简单分为需要回复的消息和与不需要回复的消息:
有回复消息的请求需要:
1.使用ResponseType : 指定指定回复消息类型
2.在类型后使用 // IRequest 关键字指定请求消息
3.消息第一个参数必须为 int32 RpcId = 90;
4.消息回复类型需要使用 // IResponse 关键字指定为回复类型
5.消息回复的前三个类型必须指定为int32、int32、string 类型的 RpcId、Error、Message 数值为90、91、92三个数值
无回复消息:
1需要指定消息类型 使用 // IMessage 关键字
在消息格式编写完后,需要点击ET > Proto 文件夹下的win_startProtoExport.bat文件
在以下地址却可查看生成的数据结构
二、客户端消息的发送:
我们打开Unity.Hotfix > Codes > Hotfix > Demo > Login > LoginHelper.cs
在脚本下编写内容:
我们新添加一个LoginTest方法,使用zoneScene.GetComponent.Creat创建会话得到session
然后通过会话调用Call方法调用需要回复的消息C2R_LoginTset.
关且通过会话调用Send方法调用不需要回复的消息C2R_SayHello()
我们来到UILoginConponentSystem.cs注释原有代码,并调编写调用LoginTest,如下:
我们打开Unity.Hotfix > Codes > Hotfix > Demo > Login 中创建 R2C_SayGoodByeHandle用于收服务端发来的R2C_SayGoodBye消息
需要注意的是需要添加[MessageHandle]标签,并指定AMHandle用于指定接受消息内容,与上面不同,此处可以获得到服服务端的会话Session
三、服务器消息的处理:
在 Server > Server.Hotfix > Demo > Login(自创建) > 中创建 C2R_LoginTestHandle.cs 脚本
需要注意的是服务器的消息处理类需要用Handle命名结尾,并需要打上[MessageHandle]标识为消息处理类
需要继承AMRpcHandle,并填写接收与返回的消息类型,这里的是异步函数所以需要使用async及await
当在方法中调用reply()方法时,服务器端将会把respones返回给客户端。
在同一目录下,创建脚本C2R_SayHelloHandle用于处理无需回复的消息,使其继承AMHandle,这使期可以接收到客户端发送的消息
接收到消息中可以同时拿到与客户端的回话,我们在这里调用Send将R2C_SayGoodBye发送至客户端
四、查看结果
在完成上面步骤后我们编译所有代码,然后运行服务器
然后运行回到Unity编辑器中,按F5编译资源,运行项目点击登录