yyl
2026-05-11 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96
Main/Core/NetworkPackage/GameNetSystem.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
public class GameNetSystem : Singleton<GameNetSystem>
@@ -117,7 +118,15 @@
            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) =>
@@ -141,6 +150,27 @@
        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)
@@ -152,11 +182,13 @@
            }
        }
        // 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;
            }
        }
@@ -168,6 +200,7 @@
        }
    }
#if UNITY_EDITOR
    public void SendInfo(byte[] vBytes)
    {
        if (mainSocket != null)
@@ -175,7 +208,7 @@
            mainSocket.SendInfo(vBytes);
        }
    }
#endif
    public void PushPackage(GameNetPackBasic protocol, ServerType type)
    {
@@ -269,7 +302,7 @@
            LoginManager.Instance.busy = false;
            StageManager.Instance.ReturnToLoginScene();
            StageManager.Instance.ReturnToLoginScene().Forget();
            NetLinkWin.Hide();
        }
    }
@@ -286,6 +319,8 @@
    void OnUpdate()
    {
        mainSocket?.DispatchMessageQueue();
        lock (this)
        {
            while (mainProtocolQueue.Count > 0)