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); } }