前言
作为一名开发者,想必您有最基本的思考、解决问题的能力,所以本开发文档会较为精简
* 本文档仅有库使用教程和示例代码
简介
- PMCSsE_Communicator是为了对前后端的通信进行简化和保护
功能介绍和特点
- 极大地简化了通信流程,仅需简单的调用即可完成复杂的握手、通信加密和解密
- 前后端仅需关注如何处理收到的各种信息和请求,无需关注具体实现
- 使用了多线程,无需担忧网络io阻塞UI线程
- 使用事件驱动
- 内含各种模板类,使用json序列化/反序列化类,无需自行编写
基本流程(前3步不会的请自行搜索教程)
- 搭建开发环境
- 下载对应平台所需的库文件(.dll/.so等)
- 添加库引用
- 查看使用示例并开始编写代码
开发答疑
加入八宝粥的项目交流群

公共成员的基本介绍
- 考虑到后端仅有八宝粥一人负责,所有暂时只有NativeClient的教程
NativeClient
- 中文意思:原生客户端
Q:为什么是这个名字?
A:为了区别于网页端,同时表达其底层性质
作用:与NativeServer握手并建立加密连接、传输数据
公共方法
构造函数
NativeClient nativeClient = new(string ip, int port);
其中ip和port要求用户手动输入即可
(可以同时要求用户提前输入访问密钥,无需连接时再输入,增加用户操作的流畅感)
Connect
nativeClient.Connent();
- 启动客户端线程并开始连接到后端
TypePassword
nativeClient.TypePassword(string password);
- 将访问密钥输入到NativeClient的内部字段
SendRequestToBackend
nativeClient.SendRequestToBackend(SendRequestEnum sendRequestEnum, object? content = null);
- 向后端发送请求
- “SendRequestEnum”为库中的枚举类型,content为任意对象(可选的参数)
SendRequestEnum.GetMCServerManagersList
- 与NativeClient.SendRequestToBackend方法搭配使用
- 发送获取所有服务端管理器请求,content为null即可
- 若后端成功接收并处理,则会返回服务端管理器列表
- 此时如果订阅了NativeClient.CommunicatorDataReceived就会收到完整的服务端管理器列表
SendRequestEnum.AddNewMCServerManager
- 与NativeClient.SendRequestToBackend方法搭配使用
- 发送添加新的服务端管理器请求,content为null即可
- 若后端成功接收并处理,则会返回“已添加”并广播服务端管理器列表
- 此时如果订阅了NativeClient.CommunicatorDataReceived就会收到完整的服务端管理器列表
Disconnect
nativeClient.Disconnent();
- 取消所有IO操作并停止客户端线程
Dispose
nativeClient.Dispose();
- 释放NativeClient所使用的所有资源
- 注意:释放后需重新创建新实例才能再次使用
公共事件
ReportLog
订阅(Lambda表达式):
void ListenEvent()
{
nativeClient.ReportLog+=(log)=>
{
HandleLog(log);
//注:log为string
};
}
解除订阅(Lambda表达式):无法解除
订阅(事件处理方法):
void ListenEvent()
{
nativeClient.ReportLog+=HandleReportLogEvent;
}
void HandleReportLogEvent(string log)
{
Console.WriteLine(log);
}
解除订阅(事件处理方法):
void ListenEvent()
{
nativeClient.ReportLog-=HandleReportLogEvent;
}
void HandleReportLogEvent(string log)
{
Console.WriteLine(log);
}
Connected
订阅(Lambda表达式):
void ListenEvent()
{
nativeClient.Connected+=()=>
{
Console.WriteLine("连接成功");
};
}
解除订阅(Lambda表达式):无法解除
订阅(事件处理方法):
void ListenEvent()
{
nativeClient.Connected+=HandleConnectedEvent;
}
void HandleConnectedEvent()
{
Console.WriteLine("连接成功");
}
解除订阅(事件处理方法):
void ListenEvent()
{
nativeClient.Connected-=HandleConnectedEvent;
}
void HandleConnectedEvent()
{
Console.WriteLine("连接成功");
}