using System;
namespace Project
{
///
/// Chat message type
///
public enum MessageType
{
/// Client connect
Connect = 0,
/// Client disconnect
Disconnect = 1,
/// Normal chat message
Chat = 2,
/// Server notice
Notice = 3,
/// Whisper message
Whisper = 4,
/// User list request
UserListRequest = 5,
/// User list response
UserListResponse = 6,
/// Ping (keep alive)
Ping = 7,
/// Pong (ping response)
Pong = 8
}
///
/// Chat message protocol
///
[Serializable]
public class ChatMessage
{
/// Message type
public MessageType Type { get; set; }
/// Sender nickname
public string NickName { get; set; }
/// Sender employee ID (사번)
public string EmployeeId { get; set; }
/// Sender IP
public string IpAddress { get; set; }
/// Sender hostname
public string HostName { get; set; }
/// Message content
public string Content { get; set; }
/// Target employee ID (for 1:1 chat)
public string TargetEmployeeId { get; set; }
/// Target nickname (for whisper, null for broadcast)
public string TargetNickName { get; set; }
/// Send time
public DateTime Timestamp { get; set; }
/// User group (for filtering)
public string UserGroup { get; set; }
public ChatMessage()
{
Timestamp = DateTime.Now;
}
public override string ToString()
{
return $"[{Timestamp:HH:mm:ss}] {NickName}: {Content}";
}
}
}