镇江市扬中市做网站,爱站网功能,有限责任公司破产法人承担的责任,网站开发投票代码数据结构:Socket_Study_Model
Socket_Study_Model 数据结构层#xff0c;定义了客户端与服务端之间交互的所有消息模型、枚举类型和通用消息格式#xff0c;基于 JSON 序列化实现跨端数据传输#xff0c;所有消息均通过统一的 MessageStyle 格式封装。
后期拓展就添加 [XXX…数据结构:Socket_Study_ModelSocket_Study_Model数据结构层定义了客户端与服务端之间交互的所有消息模型、枚举类型和通用消息格式基于 JSON 序列化实现跨端数据传输所有消息均通过统一的MessageStyle格式封装。后期拓展就添加[XXXXX]Model然后服务和客户端都可以引用了。欢迎消息-WelComMessageModel服务端向新连接客户端发送的欢迎消息模型是客户端建立连接后接收的首个消息。usingSystem;namespaceSocket_Study_Model{/// summary/// 欢迎消息的model/// /summary[Serializable]publicclassWelComMessageModel{/// summary/// 欢迎消息/// /summarypublicstringMessage{get;set;}publicWelComMessageModel(stringmessage){Messagemessage;}}}StandMessageModel标准消息模型用于简单的点对点文本消息、系统提示、操作结果等基础消息最常用的消息载体。usingSystem;namespaceSocket_Study_Model{/// summary/// 标准消息/// /summary[Serializable]publicclassStandMessageModel{publicstringSenderClientId{get;set;}publicstringTargetClientID{get;set;}publicstringMessage{get;set;}publicstringSenderName{get;set;}publicStandMessageModel(stringsenderId,stringtargetId,stringmessage){SenderClientIdsenderId;TargetClientIDtargetId;Messagemessage;}}}OnlineUserModel.cs在线用户相关模型包含单个在线用户信息和在线列表响应结构用于响应客户端的在线列表查询请求。usingSystem.Collections.Generic;usingSystem;namespaceSocket_Study_Model{/// summary/// 在线用户信息模型/// /summarypublicclassOnlineUserModel{/// summary/// 客户端ID/// /summarypublicstringClientId{get;set;}/// summary/// 用户名未设置则显示未命名/// /summarypublicstringUserName{get;set;}/// summary/// 最后活跃时间/// /summarypublicDateTimeLastActiveTime{get;set;}}/// summary/// 在线列表响应模型/// /summarypublicclassOnlineListResponseModel{/// summary/// 在线用户总数/// /summarypublicintTotalCount{get;set;}/// summary/// 在线用户列表/// /summarypublicListOnlineUserModelUsers{get;set;}newListOnlineUserModel();}}MessageTypeEnum消息类型用于在MessageStyle设置消息类型namespaceSocket_Study_Model{/// summary/// 消息类型枚举/// /summarypublicenumMessageTypeEnum{/// summary/// 未知类型/// /summaryUnknown0,/// summary/// 欢迎消息/// /summaryWelcome1,/// summary/// 普通文本消息/// /summaryText2,/// summary/// 广播消息/// /summaryBroadcast3,/// summary/// 心跳消息/// /summaryHeartbeat4,/// summary/// 私信/// /summaryPrivateMsg5,/// summary/// 设置用户名/// /summarySetUserName6,/// summary/// 请求用户列表/// /summaryListRequest7,}}MessageStyle全局统一的消息格式封装类是客户端与服务端之间传输的唯一消息载体。所有业务消息如StandMessageModel、BroadcastMessageModel均序列化为字符串后存入Message字段通过Type字段标识业务类型实现消息的标准化传输。usingNewtonsoft.Json;usingNewtonsoft.Json.Converters;namespaceSocket_Study_Model{/// summary/// 消息类型/// /summary[System.Serializable]publicclassMessageStyle{/// summary/// 消息类型/// /summary[JsonConverter(typeof(StringEnumConverter))]publicMessageTypeEnumType{get;set;}/// summary/// 对应 clientId/// /summarypublicstringClientId{get;set;}/// summary/// 消息/// /summarypublicstringMessage{get;set;}publicMessageStyle(stringclientId,stringmessage,MessageTypeEnummessageTypeEnumMessageTypeEnum.Text){TypemessageTypeEnum;ClientIdclientId;Messagemessage;}}}消息广播模型-BroadcastMessageModelusingNewtonsoft.Json;usingNewtonsoft.Json.Converters;namespaceSocket_Study_Model{/// summary/// 广播消息模型/// /summary[System.Serializable]publicclassBroadcastMessageModel{/// summary/// 消息类型/// /summary[JsonConverter(typeof(StringEnumConverter))]publicBroadcastMessageTypeMessageType{get;set;}/// summary/// 消息/// /summarypublicstringMessage{get;set;}/// summary/// 发送者信息/// /summarypublicstringSenderClientId{get;set;}/// summary/// 发送时间/// /summarypublicSystem.DateTimeSendTime{get;set;}System.DateTime.Now;/// summary/// 构造函数/// /summary/// param namemessage消息内容/param/// param namesenderClientId发送者id/param/// param namemessageType消息类型/parampublicBroadcastMessageModel(stringmessage,stringsenderClientId,BroadcastMessageTypemessageTypeBroadcastMessageType.UserMessage){MessageTypemessageType;Messagemessage;SenderClientIdsenderClientId;}}/// summary/// 广播的消息类型/// /summarypublicenumBroadcastMessageType{/// summary/// 用户消息/// /summaryUserMessage0,/// summary/// 警告消息/// /summaryWarning1,/// summary/// 错误消息/// /summaryError2,/// summary/// 状态更新/// /summaryStatusUpdate3,}}