| | |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using Cysharp.Threading.Tasks; |
| | | |
| | | |
| | | public class GameNetSystem : Singleton<GameNetSystem> |
| | |
| | | Debug.Log(ex); |
| | | } |
| | | |
| | | Debug.unityLogger.logEnabled = true; |
| | | |
| | | mainSocket = new ClientSocket(ServerType.Main); |
| | | // websocket的断开链接需要处理一下 |
| | | mainSocket.OnDisconnected = () => |
| | | { |
| | | netState = NetState.DisConnected; |
| | | LoginManager.Instance.busy = false; |
| | | }; |
| | | mainProtocolQueue.Clear(); |
| | | |
| | | mainSocket.Connect(ip, port, (bool ok) => |
| | |
| | | waitLoginMap = _wait; |
| | | } |
| | | |
| | | public bool GetIsWaitLoginMap() |
| | | { |
| | | return waitLoginMap; |
| | | } |
| | | |
| | | //0403登录之前的包缓存 |
| | | Queue<GameNetPackBasic> sendQueue = new Queue<GameNetPackBasic>(); |
| | | |
| | | public void SendCachePackage() |
| | | { |
| | | int cnt = sendQueue.Count; |
| | | if (mainSocket != null) |
| | | { |
| | | while (sendQueue.Count > 0) |
| | | { |
| | | SendInfo(sendQueue.Dequeue()); |
| | | } |
| | | } |
| | | Debug.Log($"重点提醒:0403登录后 发送缓存包数量 {cnt} 个"); |
| | | } |
| | | |
| | | public void SendInfo(GameNetPackBasic protocol) |
| | | { |
| | | if (waitLogin) |
| | |
| | | } |
| | | } |
| | | |
| | | // 0102是从地图发送的 说明已登录,但可能卡顿导致通知route状态慢于客户端,依然需要防范 |
| | | if (waitLoginMap) |
| | | { |
| | | if (protocol is not C0123_tagCClientPackVersion && protocol is not C0101_tagCPlayerLogin) |
| | | { |
| | | Debug.LogWarning("等待0403包,不允许发送其他包 " + protocol.ToString()); |
| | | Debug.Log("重点提醒:登录完成前的封包先加入队列 等0403回包后再一起发送服务端 " + protocol.ToString()); |
| | | sendQueue.Enqueue(protocol); |
| | | return; |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | #if UNITY_EDITOR |
| | | public void SendInfo(byte[] vBytes) |
| | | { |
| | | if (mainSocket != null) |
| | |
| | | mainSocket.SendInfo(vBytes); |
| | | } |
| | | } |
| | | |
| | | #endif |
| | | |
| | | public void PushPackage(GameNetPackBasic protocol, ServerType type) |
| | | { |
| | |
| | | |
| | | LoginManager.Instance.busy = false; |
| | | |
| | | StageManager.Instance.ReturnToLoginScene(); |
| | | StageManager.Instance.ReturnToLoginScene().Forget(); |
| | | NetLinkWin.Hide(); |
| | | } |
| | | } |
| | |
| | | |
| | | void OnUpdate() |
| | | { |
| | | mainSocket?.DispatchMessageQueue(); |
| | | |
| | | lock (this) |
| | | { |
| | | while (mainProtocolQueue.Count > 0) |