接口更新
This commit is contained in:
parent
ddf0f7ada0
commit
93292b1a59
|
@ -1,56 +0,0 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Net;
|
||||
using Net.Component;
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace BITKit
|
||||
{
|
||||
[Serializable]
|
||||
public record GDNetSerivceProvider:INetProvider
|
||||
{
|
||||
public void ServerRpc(Action<string> action, params object[] pars)
|
||||
{
|
||||
SendAllRT(action.Method.Name,pars);
|
||||
}
|
||||
public void ServerRpc(Action<object> action, params object[] pars)
|
||||
{
|
||||
SendAllRT(action.Method.Name,pars);
|
||||
}
|
||||
public void AddRpcHandle(object rpcHandle)
|
||||
{
|
||||
|
||||
}
|
||||
public void SendRT(int id,string rpcName, params object[] pars)
|
||||
{
|
||||
}
|
||||
|
||||
public void SendAllRT(string rpcName, params object[] pars)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void ServerRpc(Action<Object> action, params object[] pars)
|
||||
{
|
||||
SendAllRT(action.Method.Name,pars);
|
||||
}
|
||||
|
||||
public void ClientRpc(Action<Object> action, params object[] pars)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void ServerRpc(Action<GameObject> action, params object[] pars)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void ClientRpc(Action<GameObject> action, params object[] pars)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,136 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using Net;
|
||||
using Net.Client;
|
||||
using Net.Component;
|
||||
using Net.Share;
|
||||
|
||||
namespace BITKit
|
||||
{
|
||||
/// <summary>
|
||||
/// 基于GDNet的网络服务
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class GDNetService:INetProvider,INetClient
|
||||
{
|
||||
//服务器地址与端口号
|
||||
[Header(Constant.Header.Settings)]
|
||||
[SerializeField] private string address;
|
||||
[SerializeField] private ushort port;
|
||||
[Header(Constant.Header.Components)]
|
||||
//绑定GDNet的ClientManager
|
||||
[SerializeField]
|
||||
private ClientManager clientManager;
|
||||
//内部事件系统
|
||||
private readonly GenericEvent eventSystem = new();
|
||||
//内部变量
|
||||
[Header(Constant.Header.InternalVariables)]
|
||||
//已保存的Rpc对象
|
||||
private readonly List<object> rpcHandles = new();
|
||||
//GDNet的网络客户端
|
||||
private ClientBase client => clientManager.client;
|
||||
/// <summary>
|
||||
/// 是否已连接到服务端
|
||||
/// </summary>
|
||||
public bool IsConnected => client.Connected;
|
||||
/// <summary>
|
||||
/// 连接服务端的延迟
|
||||
/// </summary>
|
||||
public int Ping { get; private set; }
|
||||
//客户端的基本回调
|
||||
public event Action OnStartConnect;
|
||||
public event Action OnConnected;
|
||||
public event Action OnDisconnected;
|
||||
public event Action OnConnectedFailed;
|
||||
|
||||
public void ServerCommand<T>(T command=default)
|
||||
{
|
||||
SendRT("CallServerCommand",command);
|
||||
}
|
||||
|
||||
public void RpcClientCommand<T>(T command=default)
|
||||
{
|
||||
SendRT("CallRpcClientCommand",command);
|
||||
}
|
||||
|
||||
public void ClientCommand<T>(int id,T command=default)
|
||||
{
|
||||
SendRT("CallClientCommand",id,command);
|
||||
}
|
||||
|
||||
public UniTask<T> GetFromServer<T>(string addressablePath = "Internal")
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public UniTask<T> GetFromClient<T>(int id, string addressablePath = "Internal")
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void AddRpcHandle(object rpcHandle)
|
||||
{
|
||||
rpcHandles.Add(rpcHandle);
|
||||
}
|
||||
|
||||
public void AddCommandListener<T>(Action<T> handle)
|
||||
{
|
||||
eventSystem.AddListener(handle);
|
||||
}
|
||||
|
||||
public void RemoveCommandListener<T>(Action<T> handle)
|
||||
{
|
||||
eventSystem.RemoveListener(handle);
|
||||
}
|
||||
|
||||
public void SendRT(string rpcName, params object[] pars)
|
||||
{
|
||||
clientManager.SendRT(rpcName,pars);
|
||||
}
|
||||
|
||||
public void SendTargetRT(int id, string rpcName, params object[] pars)
|
||||
{
|
||||
SendRT("CallTargetRT",id,rpcName,pars);
|
||||
}
|
||||
|
||||
public void SendAllRT(string rpcName, params object[] pars)
|
||||
{
|
||||
SendRT("CallSendAllRT",rpcName,pars);
|
||||
}
|
||||
|
||||
public async UniTask<bool> Connect(string _address = "localhost", ushort _port = 27014)
|
||||
{
|
||||
if (client.Connected) return true;
|
||||
client.host = _address;
|
||||
client.port = _port;
|
||||
foreach (var x in rpcHandles)
|
||||
{
|
||||
client.AddRpcHandle(x);
|
||||
}
|
||||
OnStartConnect?.Invoke();
|
||||
if (await client.Connect())
|
||||
{
|
||||
OnConnected?.Invoke();
|
||||
}
|
||||
OnConnectedFailed?.Invoke();
|
||||
return false;
|
||||
}
|
||||
|
||||
public void Disconnect()
|
||||
{
|
||||
if (IsConnected)
|
||||
{
|
||||
client.Close();
|
||||
OnDisconnected.Invoke();
|
||||
}
|
||||
}
|
||||
private void OnReceiveCommand(object command)
|
||||
{
|
||||
eventSystem.Invoke($"{command.GetType().FullName}.{Constant.System.Internal}",command);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
* ⭐INetServer 服务端接口的基本定义
|
||||
* ⭐INetClient 客户端接口的基本定义
|
||||
*/
|
||||
using System;
|
||||
using Cysharp.Threading.Tasks;
|
||||
namespace BITKit
|
||||
{
|
||||
|
@ -24,19 +25,21 @@ namespace BITKit
|
|||
/// <summary>
|
||||
/// 向服务端发送指令
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
void ServerCommand<T>();
|
||||
/// <typeparam name="T">远程指令类型</typeparam>
|
||||
void ServerCommand<T>(T command=default);
|
||||
/// <summary>
|
||||
/// 向所有客户端发送指令
|
||||
/// </summary>
|
||||
/// <typeparam name="T">远程指令类型</typeparam>
|
||||
void RpcClientCommand<T>();
|
||||
void RpcClientCommand<T>(T command=default);
|
||||
|
||||
/// <summary>
|
||||
/// 向单个客户端发送指令
|
||||
/// </summary>
|
||||
/// <param name="id">客户端ID</param>
|
||||
/// <param name="command">指令实例</param>
|
||||
/// <typeparam name="T">远程指令类型</typeparam>
|
||||
void ClientCommand<T>(int id);
|
||||
void ClientCommand<T>(int id,T command);
|
||||
/// <summary>
|
||||
/// 从服务端获取数据
|
||||
/// </summary>
|
||||
|
@ -123,6 +126,7 @@ namespace BITKit
|
|||
|
||||
public interface INetClient
|
||||
{
|
||||
public event Action OnStartConnect;
|
||||
public event Action OnConnected;
|
||||
public event Action OnDisconnected;
|
||||
public event Action OnConnectedFailed;
|
||||
|
|
Loading…
Reference in New Issue