using Cysharp.Threading.Tasks;
using System;
///
/// 网络服务接口 - 统一封装 Socket 和 WebSocket(适配 ClientSocket API)
///
public interface INetworkService
{
///
/// 网络连接状态
///
NetworkState State { get; }
///
/// 是否已连接(适配 ClientSocket.connected)
///
bool IsConnected { get; }
///
/// 最后收包时间(适配 ClientSocket.lastPackageTime)
///
System.DateTime LastPackageTime { get; }
///
/// 连接到服务器
///
/// 服务器地址(ws:// 或 wss:// 对于 WebSocket)
UniTask ConnectAsync(string url);
///
/// 断开连接(异步)
///
UniTask DisconnectAsync();
///
/// 断开连接(同步,适配 ClientSocket.CloseConnect)
///
void Disconnect();
///
/// 发送协议包(适配 ClientSocket.SendInfo)
///
void SendInfo(GameNetPackBasic protocol);
///
/// 发送二进制数据(适配 ClientSocket.SendInfo)
///
void SendInfo(byte[] data);
///
/// 发送二进制数据(异步)
///
UniTask SendAsync(byte[] data);
///
/// 连接状态改变事件
///
event Action OnStateChanged;
}
///
/// 网络连接状态
///
public enum NetworkState
{
Disconnected, // 未连接
Connecting, // 连接中
Connected, // 已连接
Reconnecting, // 重连中
Closed // 已关闭
}