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}";
}
}
}