diff --git a/Discord.API/Gateway/AbstractGateway.cs b/Discord.API/Gateway/AbstractGateway.cs index 98a097b..7792661 100644 --- a/Discord.API/Gateway/AbstractGateway.cs +++ b/Discord.API/Gateway/AbstractGateway.cs @@ -96,6 +96,10 @@ public abstract class AbstractGateway { InstantHeartbeatCts?.Cancel(); } + protected void ImmediateHeartbeat(){ + InstantHeartbeatCts?.Cancel(); + } + #endregion public virtual async Task Close(){ diff --git a/Discord.API/Gateway/GatewayClient.cs b/Discord.API/Gateway/GatewayClient.cs index d0223df..db5978e 100644 --- a/Discord.API/Gateway/GatewayClient.cs +++ b/Discord.API/Gateway/GatewayClient.cs @@ -78,6 +78,9 @@ public class GatewayClient : AbstractGateway { case InvalidSessionPacket invalidSessionPacket: InvalidSessionHandler(invalidSessionPacket); break; + case HeartbeatPacket: + HeartbeatPacketHandler(); + break; default: Log.Debug("GATEWAY: Packet not handled {opcode}", packet.Op); break; @@ -126,6 +129,11 @@ public class GatewayClient : AbstractGateway { Log.Debug("GATEWAY: Resume url: {url}", packet.Data.ResumeGatewayUrl); } + private void HeartbeatPacketHandler(){ + ImmediateHeartbeat(); + Log.Debug("GATEWAY: Remote requested immediate heartbeat"); + } + protected override Task SendHeartbeat() { HeartbeatPacket packet = new(){