public void Send(NpcSocketMsg msg)
        {
            if (SocketState == SocketState.Connected)
            {
                if (!_ignoreList.Contains(msg.MsgType))
                {
                    _msgQueue.Enqueue(msg);
                    Console.WriteLine($"{DateTime.Now} {msg.MsgType} -----------{ServerId} Send Wait");
                }
                else
                {
                    var writer = new SocketBufferWriter();
                    writer.WriteString(msg);
                    Send(writer.Finish());
                }
            }

            //if (SocketState == SocketState.Connected)
            //{
            //    if (!_ignoreList.Contains(msg.MsgType))
            //    {
            //        _msgQueue.Enqueue(msg);
            //    }

            //    var writer = new SocketBufferWriter();
            //    writer.WriteString(msg);
            //    Send(writer.Finish());
            //    if (!_ignoreList.Contains(msg.MsgType))
            //    {
            //        Console.WriteLine($"{DateTime.Now} {msg.MsgType} -----------{ServerId} Send Finish");
            //    }
            //}
        }
 public void Send(NpcSocketMsg msg)
 {
     if (SocketState == SocketState.Connected)
     {
         var writer = new SocketBufferWriter();
         writer.WriteString(msg);
         Send(writer.Finish());
         if (!_ignoreList.Contains(msg.MsgType))
         {
             //Console.WriteLine($"{DateTime.Now} {msg.MsgType} -----------{ServerId} Send Finish");
         }
     }
 }
        private void Heart(object state)
        {
            if (_isSocketTry)
            {
                if ((DateTime.Now - _lastTime).TotalSeconds > 30)
                {
                    _isSocketTry = false;
                }
                return;
            }

            if (SocketState == SocketState.Connected)
            {
                if (_lastTime != default(DateTime) && (DateTime.Now - _lastTime).TotalSeconds > 10)
                {
                    Console.WriteLine("超时");
                    SocketState = SocketState.Close;
                    return;
                }
                try
                {
                    var msg = new NpcSocketMsg
                    {
                        MsgType = NpcSocketMsgType.Heart,
                    };
                    var writer = new SocketBufferWriter();
                    writer.WriteString(msg);
                    var s = writer.Finish();
                    Send(s);
                }
                catch (Exception ex)
                {
                    _isNormal   = false;
                    SocketState = SocketState.Fail;
                    Log.Error($"Heart Error, {ex.Message}, {ex.StackTrace}");
                }
            }
            else
            {
                Connect();
            }
        }
 public void KeepSend()
 {
     _sendStopwatch.Start();
     while (true)
     {
         if (_msgQueue.TryPeek(out var msg) && _sendStopwatch.ElapsedMilliseconds > timeOut)
         {
             if (SocketState == SocketState.Connected)
             {
                 var writer = new SocketBufferWriter();
                 writer.WriteString(msg);
                 Send(writer.Finish());
                 _sendStopwatch.Restart();
                 if (!_ignoreList.Contains(msg.MsgType))
                 {
                     Console.WriteLine($"{DateTime.Now} {msg.Guid} {msg.MsgType} -----------{ServerId} Send Finish");
                 }
             }
         }
         Thread.Sleep(10);
     }
 }