Browse Source

websocket 控制是否返回发送信息

norm
hyh 2 months ago
parent
commit
35c339418d
  1. 3
      src/CellularManagement.WebSocket/Handlers/NotificationMessageHandler.cs
  2. 39
      src/CellularManagement.WebSocket/Models/ChatMessage.cs
  3. 7
      src/CellularManagement.WebSocket/Models/WebSocketMessage.cs
  4. 6
      src/CellularManagement.WebSocket/Services/IncomingMessageProcessor.cs

3
src/CellularManagement.WebSocket/Handlers/NotificationMessageHandler.cs

@ -36,7 +36,8 @@ public class NotificationMessageHandler : IWebSocketMessageHandler
timestamp = DateTime.UtcNow
}
})),
MessageType = System.Net.WebSockets.WebSocketMessageType.Text
MessageType = System.Net.WebSockets.WebSocketMessageType.Text,
NeedQueue = false
};
_logger.LogInformation("通知消息处理完成,连接ID:{ConnectionId},响应数据大小:{DataSize}字节",

39
src/CellularManagement.WebSocket/Models/ChatMessage.cs

@ -0,0 +1,39 @@
using System;
namespace CellularManagement.WebSocket.Models;
/// <summary>
/// 聊天消息模型
/// </summary>
public class ChatMessage
{
/// <summary>
/// 发送者ID
/// </summary>
public string SenderId { get; set; } = string.Empty;
/// <summary>
/// 发送者名称
/// </summary>
public string SenderName { get; set; } = string.Empty;
/// <summary>
/// 消息内容
/// </summary>
public string Content { get; set; } = string.Empty;
/// <summary>
/// 消息类型(私聊/群聊)
/// </summary>
public string MessageType { get; set; } = "group";
/// <summary>
/// 接收者ID(私聊时使用)
/// </summary>
public string? ReceiverId { get; set; }
/// <summary>
/// 发送时间
/// </summary>
public DateTime Timestamp { get; set; } = DateTime.UtcNow;
}

7
src/CellularManagement.WebSocket/Models/WebSocketMessage.cs

@ -12,8 +12,7 @@ public record WebSocketMessage
public WebSocketMessageType MessageType { get; init; } // 消息类型
public DateTime Timestamp { get; init; } = DateTime.UtcNow; // 时间戳
public int Priority { get; init; } = 0; // 优先级
public bool IsComplete { get; set; }
public bool IsError { get; set; }
public bool IsComplete { get; set; } // 消息是否完整
public bool IsError { get; set; } // 是否是错误消息
public bool NeedQueue { get; init; } = true; // 是否需要加入队列发送,默认为 true
}

6
src/CellularManagement.WebSocket/Services/IncomingMessageProcessor.cs

@ -218,12 +218,16 @@ public class IncomingMessageProcessor : IDisposable
_logger.LogDebug("消息处理完成,连接ID:{ConnectionId},处理结果:{Processed}",
message.ConnectionId, processedMessage != null);
if (processedMessage != null)
if (processedMessage?.NeedQueue == true)
{
// 将处理后的消息入队
await _messageQueueManager.TryQueueOutgoingMessage(processedMessage);
_logger.LogDebug("处理后的消息已入队,连接ID:{ConnectionId}", message.ConnectionId);
}
else
{
_logger.LogDebug("消息不需要入队或为空,连接ID:{ConnectionId}", message.ConnectionId);
}
}
catch (Exception ex)
{

Loading…
Cancel
Save