代码拉取完成,页面将自动刷新
unity3D Tcp框架, 基于Telepathy , 包含服务端和客户端, 用于unity内端通讯,高效稳定. unity3D Udp框架, 基于kcp2k, 包含服务端和客户端, 用于unity内端通讯,高效稳定(UDP没做分片处理, 消息长度有限制).
Telepathy 和 kcp2k 是unity Mirror联机插件里面的应用的
Telepathy https://github.com/vis2k/Telepathy kcp2k https://github.com/vis2k/kcp2k
使用方法简单快捷,请查看demo
Client:
public class ClientManager : BaseManager
{
protected override void Awake()
{
switch (networkType)
{
case NetworkType.Tcp:
network = new TcpClientManager(this.Ip, this.Port);
section = "Client_TCP";
break;
case NetworkType.Udp:
network = new UdpClientManager(this.Ip, this.Port);
section = "Client_UDP";
break;
}
base.Awake();
}
private void Start()
{
InvokeRepeating("ConnectedInterval", 0, connectInterval); //发送心跳
}
protected override void OnConnected(Message msg)
{
base.OnConnected(msg);
connectCount = 0;
LoginClass login = new LoginClass();
login.userid = 1;
login.username = "client01";
login.password = "123456";
string str = JsonConvert.SerializeObject(login);
SendMsg(str, HeaderType.Login);
}
#region 心跳
[Header("心跳发送总次数:")]
public int HeartCount = 0;
/// <summary>
/// 设置重连次数
/// </summary>
[Space(10), Header("尝试重连次数,-1无限次")] public int reConnCount = 1000;
/// <summary>
/// 链接间隔时间
/// </summary>
float connectInterval = 1f;
/// <summary>
/// 链接次数
/// </summary>
int connectCount = 0;
public UnityAction<int> OnConnInterval = null;
/// <summary>
/// 心跳检查 断开重连 在Update中调用才有效
/// </summary>
protected void ConnectedInterval()
{
if (network == null || network.Connected == false)
{
HeartCount = 0;
network.Destroy();
UnityAction action = () =>
{
//链接次数增加
connectCount++;
string str = string.Format("这是第{0}次 连接", connectCount);
Debug.Log(str);
network.StartNetwork(); //重连一次
network.MaxMessageSize = 1024 * 1024;
};
if (reConnCount < 0)
{
action();
}
else
{
if (connectCount < reConnCount)
{
action();
}
}
OnConnInterval?.Invoke(connectCount);
}
else if (network.Connected)
{
HeartCount += 1;
SendMsg("1", HeaderType.Heart);
}
}
#endregion
}
Server:
public class ServerManager : BaseManager
{
public BaseLoginController loginController;
protected override void Awake()
{
switch (networkType)
{
case NetworkType.Tcp:
network = new TcpServerManager(this.Ip, this.Port);
section = "Server_TCP";
secDoc = "socket服务监听控制端参数, IP为本机IP,只可读无需更改";
break;
case NetworkType.Udp:
network = new UdpServerManager(this.Ip, this.Port);
section = "Server_UDP";
secDoc = "socket服务监听控制端参数, IP为本机IP,只可读无需更改";
break;
}
//network = networkType == NetworkType.Tcp ? new TcpServerManager() : new UdpServerManager();
base.Awake();
if (loginController != null) loginController.manager = this;
}
protected override void OnDisconnected(Message msg)
{
base.OnDisconnected(msg);
loginController?.OnDisconnected(msg);
}
protected override void OnLoginMessage(int connID, LoginMessage msg)
{
base.OnLoginMessage(connID, msg);
loginController?.OnLoginMessage(connID, msg);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。