|
|
@ -36,10 +36,9 @@ namespace LTEMvcApp.Services |
|
|
|
private bool _disposed; |
|
|
|
private LogParserService logParser = new LogParserService(); |
|
|
|
private readonly ILogger<LTEClientWebSocket> _logger; |
|
|
|
private readonly List<string> _sentMessages = new List<string>(); |
|
|
|
private readonly object _sentLock = new object(); |
|
|
|
private readonly List<string> _receivedMessages = new List<string>(); |
|
|
|
private readonly object _receivedLock = new object(); |
|
|
|
private const int ServerMessageCacheLimit = 1000; |
|
|
|
private readonly ConcurrentQueue<string> _sentMessages = new ConcurrentQueue<string>(); |
|
|
|
private readonly ConcurrentQueue<string> _receivedMessages = new ConcurrentQueue<string>(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 事件
|
|
|
@ -118,40 +117,11 @@ namespace LTEMvcApp.Services |
|
|
|
/// </summary>
|
|
|
|
public bool IsReadonly => _config.Readonly; |
|
|
|
|
|
|
|
public int SentMessagesCount |
|
|
|
{ |
|
|
|
get { lock (_sentLock) { return _sentMessages.Count; } } |
|
|
|
} |
|
|
|
public int ReceivedMessagesCount |
|
|
|
{ |
|
|
|
get { lock (_receivedLock) { return _receivedMessages.Count; } } |
|
|
|
} |
|
|
|
public IEnumerable<string> SentMessages => _sentMessages; |
|
|
|
public IEnumerable<string> ReceivedMessages => _receivedMessages; |
|
|
|
|
|
|
|
public List<string> GetNewSentMessages(int startIndex) |
|
|
|
{ |
|
|
|
lock (_sentLock) |
|
|
|
{ |
|
|
|
var count = _sentMessages.Count - startIndex; |
|
|
|
if (count > 0) |
|
|
|
{ |
|
|
|
return _sentMessages.GetRange(startIndex, count); |
|
|
|
} |
|
|
|
return new List<string>(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public List<string> GetNewReceivedMessages(int startIndex) |
|
|
|
{ |
|
|
|
lock (_receivedLock) |
|
|
|
{ |
|
|
|
var count = _receivedMessages.Count - startIndex; |
|
|
|
if (count > 0) |
|
|
|
{ |
|
|
|
return _receivedMessages.GetRange(startIndex, count); |
|
|
|
} |
|
|
|
return new List<string>(); |
|
|
|
} |
|
|
|
} |
|
|
|
public int SentMessagesCount => _sentMessages.Count; |
|
|
|
public int ReceivedMessagesCount => _receivedMessages.Count; |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
@ -398,9 +368,10 @@ namespace LTEMvcApp.Services |
|
|
|
_messageFifo.Enqueue(message); |
|
|
|
|
|
|
|
// 记录发送的消息
|
|
|
|
lock (_sentLock) |
|
|
|
_sentMessages.Enqueue(message.ToString(Formatting.Indented)); |
|
|
|
while (_sentMessages.Count > ServerMessageCacheLimit) |
|
|
|
{ |
|
|
|
_sentMessages.Add(message.ToString(Formatting.Indented)); |
|
|
|
_sentMessages.TryDequeue(out _); |
|
|
|
} |
|
|
|
|
|
|
|
if (_messageFifo.Count < 100) // 批处理大小
|
|
|
@ -536,9 +507,10 @@ namespace LTEMvcApp.Services |
|
|
|
StopTimers(); |
|
|
|
|
|
|
|
// 记录接收的消息
|
|
|
|
lock (_receivedLock) |
|
|
|
_receivedMessages.Enqueue(JToken.Parse(e.Message).ToString(Formatting.Indented)); |
|
|
|
while (_receivedMessages.Count > ServerMessageCacheLimit) |
|
|
|
{ |
|
|
|
_receivedMessages.Add(JToken.Parse(e.Message).ToString(Formatting.Indented)); |
|
|
|
_receivedMessages.TryDequeue(out _); |
|
|
|
} |
|
|
|
|
|
|
|
try |
|
|
@ -699,9 +671,10 @@ namespace LTEMvcApp.Services |
|
|
|
{ |
|
|
|
_logger.LogDebug($"[{_config.Name}] 收到消息: {e.Message}"); |
|
|
|
// 记录接收的消息
|
|
|
|
lock (_receivedLock) |
|
|
|
_receivedMessages.Enqueue(JToken.Parse(e.Message).ToString(Formatting.Indented)); |
|
|
|
while (_receivedMessages.Count > ServerMessageCacheLimit) |
|
|
|
{ |
|
|
|
_receivedMessages.Add(JToken.Parse(e.Message).ToString(Formatting.Indented)); |
|
|
|
_receivedMessages.TryDequeue(out _); |
|
|
|
} |
|
|
|
try |
|
|
|
{ |
|
|
@ -896,9 +869,11 @@ namespace LTEMvcApp.Services |
|
|
|
var json = JsonConvert.SerializeObject(messages[0]); |
|
|
|
_webSocket.Send(json); |
|
|
|
// 记录发送的消息
|
|
|
|
lock (_sentLock) |
|
|
|
var formattedJson = JToken.Parse(json).ToString(Formatting.Indented); |
|
|
|
_sentMessages.Enqueue(formattedJson); |
|
|
|
while (_sentMessages.Count > ServerMessageCacheLimit) |
|
|
|
{ |
|
|
|
_sentMessages.Add(JToken.Parse(json).ToString(Formatting.Indented)); |
|
|
|
_sentMessages.TryDequeue(out _); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (messages.Count > 1) |
|
|
@ -906,9 +881,11 @@ namespace LTEMvcApp.Services |
|
|
|
var json = JsonConvert.SerializeObject(messages); |
|
|
|
_webSocket.Send(json); |
|
|
|
// 记录发送的消息
|
|
|
|
lock (_sentLock) |
|
|
|
var formattedJson = JToken.Parse(json).ToString(Formatting.Indented); |
|
|
|
_sentMessages.Enqueue(formattedJson); |
|
|
|
while (_sentMessages.Count > ServerMessageCacheLimit) |
|
|
|
{ |
|
|
|
_sentMessages.Add(JToken.Parse(json).ToString(Formatting.Indented)); |
|
|
|
_sentMessages.TryDequeue(out _); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|