namespace BuildFlow.IM.Integration.Tests; /// /// ChatHub 客户端事件的强类型载荷。 /// 使用强类型而非 dynamic 解析,避免 JSON 序列化命名差异(PascalCase/CamelCase)与 /// Guid↔字符串类型转换在 dynamic 下抛 InvalidCastException(SignalR 客户端回调吞异常,难定位)。 /// 字段使用可空类型,配合缺省构造,容忍服务端载荷字段增减。 /// public static class HubEvents { /// 已读回执事件:OnMessageRead。 public sealed class MessageReadEvent { public string? MessageId { get; set; } public Guid? UserId { get; set; } } /// 消息撤回事件:OnMessageRecalled。 public sealed class MessageRecalledEvent { public Guid? ConversationId { get; set; } public string? MessageId { get; set; } public Guid? UserId { get; set; } } /// 输入状态事件:OnUserTyping。 public sealed class UserTypingEvent { public Guid? ConversationId { get; set; } public Guid? UserId { get; set; } } /// 上下线事件:OnUserOnline / OnUserOffline。 public sealed class UserPresenceEvent { public Guid? UserId { get; set; } } }