mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-15 10:32:44 -04:00
Noticed they stop sending bets after a while. Use the heartbeat task to sense if this has happened and force a reconnect
This commit is contained in:
@@ -23,9 +23,11 @@ public class Clashgg : IDisposable
|
|||||||
private CancellationToken _cancellationToken = CancellationToken.None;
|
private CancellationToken _cancellationToken = CancellationToken.None;
|
||||||
private CancellationTokenSource _pingCts = new();
|
private CancellationTokenSource _pingCts = new();
|
||||||
private Task? _heartbeatTask;
|
private Task? _heartbeatTask;
|
||||||
// There's no smarts, it just does 30-second pings
|
private TimeSpan _heartbeatInterval = TimeSpan.FromSeconds(60);
|
||||||
private TimeSpan _heartbeatInterval = TimeSpan.FromSeconds(30);
|
|
||||||
private bool _isOnline = false;
|
private bool _isOnline = false;
|
||||||
|
private DateTime _lastBet = DateTime.Now;
|
||||||
|
// How long we can go without any gambling activity until we go 'fuck it' and reconnect
|
||||||
|
private TimeSpan _lastBetTolerance = TimeSpan.FromMinutes(5);
|
||||||
|
|
||||||
public Clashgg(string? proxy = null, CancellationToken? cancellationToken = null)
|
public Clashgg(string? proxy = null, CancellationToken? cancellationToken = null)
|
||||||
{
|
{
|
||||||
@@ -85,11 +87,14 @@ public class Clashgg : IDisposable
|
|||||||
{
|
{
|
||||||
if (_wsClient == null)
|
if (_wsClient == null)
|
||||||
{
|
{
|
||||||
_logger.Debug("_wsClient doesn't exist yet, not going to try ping");
|
_logger.Debug("_wsClient doesn't exist yet, not going to do anything");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//_logger.Debug("Sending Jackpot ping packet");
|
|
||||||
//_wsClient.Send("{\"id\":\"lfgkenokasino\",\"type\":\"ping\"}");
|
if (DateTime.Now - _lastBet <= _lastBetTolerance) continue;
|
||||||
|
_logger.Error("Forcing a disconnect of Clash.gg so the connection can be rebuilt " +
|
||||||
|
$"as there's been no gambling since {DateTime.Now:o}");
|
||||||
|
await _wsClient.Stop(WebSocketCloseStatus.NormalClosure, "Closed due to lack of gamba");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,9 +132,15 @@ public class Clashgg : IDisposable
|
|||||||
_wsClient.Send("[\"subscribe\",\"mines\"]");
|
_wsClient.Send("[\"subscribe\",\"mines\"]");
|
||||||
_wsClient.Send("[\"subscribe\",\"keno\"]");
|
_wsClient.Send("[\"subscribe\",\"keno\"]");
|
||||||
_isOnline = true;
|
_isOnline = true;
|
||||||
|
_heartbeatTask = Task.Run(HeartbeatTimer, _cancellationToken);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (packet[0].GetString()!.Contains(":game"))
|
||||||
|
{
|
||||||
|
_lastBet = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
if (packet[0].GetString() == "plinko:social-game")
|
if (packet[0].GetString() == "plinko:social-game")
|
||||||
{
|
{
|
||||||
_logger.Debug("Received Plinko game from Clash.gg. Deserializing payload");
|
_logger.Debug("Received Plinko game from Clash.gg. Deserializing payload");
|
||||||
@@ -197,6 +208,8 @@ public class Clashgg : IDisposable
|
|||||||
OnClashBet?.Invoke(this, betData);
|
OnClashBet?.Invoke(this, betData);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_logger.Info($"Message of type '{packet[0].GetString()}' from Clash.gg not handled");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user