fix: handle sending resume in hello event
This commit is contained in:
@@ -145,6 +145,7 @@ internal sealed class DiscordGatewayClient : IDiscordGatewayClient
|
|||||||
|
|
||||||
while (_linkedReceiveMessageCts?.IsCancellationRequested is false)
|
while (_linkedReceiveMessageCts?.IsCancellationRequested is false)
|
||||||
{
|
{
|
||||||
|
var messageString = new StringBuilder();
|
||||||
using var memoryStream = new MemoryStream();
|
using var memoryStream = new MemoryStream();
|
||||||
WebSocketReceiveResult result;
|
WebSocketReceiveResult result;
|
||||||
|
|
||||||
@@ -174,6 +175,9 @@ internal sealed class DiscordGatewayClient : IDiscordGatewayClient
|
|||||||
|
|
||||||
if (result.MessageType is WebSocketMessageType.Text)
|
if (result.MessageType is WebSocketMessageType.Text)
|
||||||
{
|
{
|
||||||
|
var message = Encoding.UTF8.GetString(messageBuffer, 0, result.Count);
|
||||||
|
messageString.Append(message);
|
||||||
|
|
||||||
await memoryStream.WriteAsync(messageBuffer.AsMemory(0, result.Count), _linkedReceiveMessageCts.Token);
|
await memoryStream.WriteAsync(messageBuffer.AsMemory(0, result.Count), _linkedReceiveMessageCts.Token);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,7 +187,8 @@ internal sealed class DiscordGatewayClient : IDiscordGatewayClient
|
|||||||
|
|
||||||
memoryStream.Seek(0, SeekOrigin.Begin);
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
var msg = Encoding.UTF8.GetString(messageBuffer, 0, result.Count);
|
var msgFromMemoryStream = Encoding.UTF8.GetString(memoryStream.ToArray());
|
||||||
|
var msgFromStringBuilder = messageString.ToString();
|
||||||
|
|
||||||
DiscordEvent? e = null;
|
DiscordEvent? e = null;
|
||||||
|
|
||||||
@@ -197,7 +202,8 @@ internal sealed class DiscordGatewayClient : IDiscordGatewayClient
|
|||||||
}
|
}
|
||||||
catch (JsonException ex)
|
catch (JsonException ex)
|
||||||
{
|
{
|
||||||
_logger.LogError(ex, "Failed to deserialize message: {Message}", msg);
|
_logger.LogError(ex, "Failed to deserialize message: {Message}", msgFromMemoryStream);
|
||||||
|
_logger.LogDebug("Message from StringBuilder: {Message}", msgFromStringBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -241,7 +247,16 @@ internal sealed class DiscordGatewayClient : IDiscordGatewayClient
|
|||||||
_logger.LogInformation("Hello event received");
|
_logger.LogInformation("Hello event received");
|
||||||
await SetHeartbeatIntervalAsync(he.Data.HeartbeatInterval, cancellationToken);
|
await SetHeartbeatIntervalAsync(he.Data.HeartbeatInterval, cancellationToken);
|
||||||
await StartHeartbeatAsync(cancellationToken);
|
await StartHeartbeatAsync(cancellationToken);
|
||||||
await IdentifyAsync(cancellationToken);
|
if (_canResume is false)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Sending identify event");
|
||||||
|
await IdentifyAsync(cancellationToken);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Sending resume event");
|
||||||
|
await SendResumeAsync(cancellationToken);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case HeartbeatAckDiscordEvent:
|
case HeartbeatAckDiscordEvent:
|
||||||
_logger.LogInformation("Heartbeat acknowledged event received");
|
_logger.LogInformation("Heartbeat acknowledged event received");
|
||||||
@@ -399,8 +414,6 @@ internal sealed class DiscordGatewayClient : IDiscordGatewayClient
|
|||||||
await SetWebSocketAsync(_webSocketFactory.Create(), cancellationToken);
|
await SetWebSocketAsync(_webSocketFactory.Create(), cancellationToken);
|
||||||
await ConnectWithResumeUrlAsync(cancellationToken);
|
await ConnectWithResumeUrlAsync(cancellationToken);
|
||||||
await StartReceiveMessagesAsync(cancellationToken);
|
await StartReceiveMessagesAsync(cancellationToken);
|
||||||
await StartHeartbeatAsync(cancellationToken);
|
|
||||||
await SendResumeAsync(cancellationToken);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user