|
|
|
@ -13,6 +13,8 @@ namespace Client |
|
|
|
|
{ |
|
|
|
|
public static Singleton Instance { get; set; } = new Singleton(); |
|
|
|
|
|
|
|
|
|
public readonly int HEARTBEAT_INTERVAL = 5000; |
|
|
|
|
|
|
|
|
|
public string Id { get; set; } = ""; |
|
|
|
|
public string Nickname { get; set; } = ""; |
|
|
|
|
public Socket Socket { get; } = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); |
|
|
|
@ -45,6 +47,13 @@ namespace Client |
|
|
|
|
Socket socket = (Socket)sender; |
|
|
|
|
byte[] headerBuffer = new byte[2]; |
|
|
|
|
|
|
|
|
|
System.Timers.Timer timer = new System.Timers.Timer(HEARTBEAT_INTERVAL); |
|
|
|
|
timer.Elapsed += async (sender, e) => |
|
|
|
|
{ |
|
|
|
|
HeartbeatPacket packet = new HeartbeatPacket(); |
|
|
|
|
await socket.SendAsync(packet.Serialize(), SocketFlags.None); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
while (true) |
|
|
|
@ -54,6 +63,8 @@ namespace Client |
|
|
|
|
if (n1 < 1) |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine($"[{DateTime.Now}] Disconnect server: {socket.RemoteEndPoint}"); |
|
|
|
|
|
|
|
|
|
timer.Stop(); |
|
|
|
|
socket.Dispose(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
@ -78,6 +89,8 @@ namespace Client |
|
|
|
|
{ |
|
|
|
|
LoginResponsePacket packet = new LoginResponsePacket(dataBuffer); |
|
|
|
|
LoginResponsed?.Invoke(packet, EventArgs.Empty); |
|
|
|
|
|
|
|
|
|
timer.Start(); |
|
|
|
|
} |
|
|
|
|
else if (packetType == PacketType.CreateRoomResponse) |
|
|
|
|
{ |
|
|
|
|