using System; namespace NoticeServer { /// /// 채팅 메시지 타입 /// public enum MessageType { /// 클라이언트 연결 Connect, /// 클라이언트 연결 해제 Disconnect, /// 일반 채팅 메시지 Chat, /// 서버 공지 Notice, /// 귓속말 Whisper, /// 사용자 목록 요청 UserListRequest, /// 사용자 목록 응답 UserListResponse, /// 핑 (연결 유지) Ping, /// 퐁 (핑 응답) Pong } /// /// 채팅 메시지 프로토콜 /// [Serializable] public class ChatMessage { /// 메시지 타입 public MessageType Type { get; set; } /// 발신자 닉네임 public string NickName { get; set; } /// 발신자 사원번호 (Employee ID) public string EmployeeId { get; set; } /// 발신자 IP public string IpAddress { get; set; } /// 발신자 호스트명 public string HostName { get; set; } /// 메시지 내용 public string Content { get; set; } /// 수신자 사원번호 (1:1 채팅용) public string TargetEmployeeId { get; set; } /// 수신자 닉네임 (귓속말용, null이면 전체) public string TargetNickName { get; set; } /// 전송 시간 public DateTime Timestamp { get; set; } /// 사용자 그룹 public string UserGroup { get; set; } public ChatMessage() { Timestamp = DateTime.Now; } public override string ToString() { return $"[{Timestamp:HH:mm:ss}] {NickName}: {Content}"; } } }