using System.Diagnostics; using System.Text.Json; using System.Text.Json.Serialization; using WebSocketSharp.Server; namespace OnlineMsgServer.Common { class Message { public string Type { get; set; } /// /// 转发的目标 /// public string? Key { get; set; } public dynamic? Data { get; set; } public Message() { Type = ""; } public static readonly JsonSerializerOptions options = new() { ReadCommentHandling = JsonCommentHandling.Skip, //允许注释 AllowTrailingCommas = true,//允许尾随逗号 PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, // 忽略 null 值 WriteIndented = true, // 美化输出 //PropertyNameCaseInsensitive = true,//属性名忽略大小写 Converters = { new MessageConverter() }, }; public static Message? JsonStringParse(string jsonString) { try { return JsonSerializer.Deserialize(jsonString, options); } catch (Exception ex) { Console.WriteLine(ex.Message); return null; } } public string ToJsonString() { return JsonSerializer.Serialize(this, options); } /// /// 指令处理逻辑(包括加密及发送过程) /// /// 将耗时任务交给Task以不阻塞单个连接的多个请求 public virtual Task Handler(string wsid, WebSocketSessionManager Sessions) { return Task.CompletedTask; } /// /// 增加计时逻辑 /// public async Task HandlerAndMeasure(string wsid, WebSocketSessionManager Sessions) { Stopwatch stopWatch = new(); stopWatch.Start(); await Handler(wsid, Sessions); stopWatch.Stop(); Log.Debug($"处理{GetType()}耗时:{stopWatch.ElapsedMilliseconds}ms"); } } }