diff --git a/src/Microsoft.AspNetCore.SignalR.Common/Internal/Protocol/HubProtocolWriteMessageExtensions.cs b/src/Microsoft.AspNetCore.SignalR.Common/Internal/Protocol/HubProtocolWriteMessageExtensions.cs index 773237dddb..119732ef56 100644 --- a/src/Microsoft.AspNetCore.SignalR.Common/Internal/Protocol/HubProtocolWriteMessageExtensions.cs +++ b/src/Microsoft.AspNetCore.SignalR.Common/Internal/Protocol/HubProtocolWriteMessageExtensions.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System; using System.IO; namespace Microsoft.AspNetCore.SignalR.Internal.Protocol diff --git a/src/Microsoft.AspNetCore.SignalR.Redis/RedisHubLifetimeManager.cs b/src/Microsoft.AspNetCore.SignalR.Redis/RedisHubLifetimeManager.cs index 25bdd602de..b14446fc0b 100644 --- a/src/Microsoft.AspNetCore.SignalR.Redis/RedisHubLifetimeManager.cs +++ b/src/Microsoft.AspNetCore.SignalR.Redis/RedisHubLifetimeManager.cs @@ -314,11 +314,9 @@ namespace Microsoft.AspNetCore.SignalR.Redis private async Task WriteAsync(HubConnectionContext connection, HubMessage hubMessage) { - var data = connection.Protocol.WriteToArray(hubMessage); - while (await connection.Output.WaitToWriteAsync()) { - if (connection.Output.TryWrite(data)) + if (connection.Output.TryWrite(hubMessage)) { break; } diff --git a/src/Microsoft.AspNetCore.SignalR/DefaultHubLifetimeManager.cs b/src/Microsoft.AspNetCore.SignalR/DefaultHubLifetimeManager.cs index 3b7b33645c..18c9c80c9c 100644 --- a/src/Microsoft.AspNetCore.SignalR/DefaultHubLifetimeManager.cs +++ b/src/Microsoft.AspNetCore.SignalR/DefaultHubLifetimeManager.cs @@ -125,11 +125,9 @@ namespace Microsoft.AspNetCore.SignalR private async Task WriteAsync(HubConnectionContext connection, HubMessage hubMessage) { - var payload = connection.Protocol.WriteToArray(hubMessage); - while (await connection.Output.WaitToWriteAsync()) { - if (connection.Output.TryWrite(payload)) + if (connection.Output.TryWrite(hubMessage)) { break; } diff --git a/src/Microsoft.AspNetCore.SignalR/HubConnectionContext.cs b/src/Microsoft.AspNetCore.SignalR/HubConnectionContext.cs index b84efb3b81..b84213bfb9 100644 --- a/src/Microsoft.AspNetCore.SignalR/HubConnectionContext.cs +++ b/src/Microsoft.AspNetCore.SignalR/HubConnectionContext.cs @@ -15,10 +15,10 @@ namespace Microsoft.AspNetCore.SignalR { public class HubConnectionContext { - private readonly WritableChannel _output; + private readonly WritableChannel _output; private readonly ConnectionContext _connectionContext; - public HubConnectionContext(WritableChannel output, ConnectionContext connectionContext) + public HubConnectionContext(WritableChannel output, ConnectionContext connectionContext) { _output = output; _connectionContext = connectionContext; @@ -51,6 +51,6 @@ namespace Microsoft.AspNetCore.SignalR set => DataEncoderFeature.DataEncoder = value; } - public virtual WritableChannel Output => _output; + public virtual WritableChannel Output => _output; } } diff --git a/src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs b/src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs index 26db9b46e4..29182191aa 100644 --- a/src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs +++ b/src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs @@ -53,7 +53,7 @@ namespace Microsoft.AspNetCore.SignalR public async Task OnConnectedAsync(ConnectionContext connection) { - var output = Channel.CreateUnbounded(); + var output = Channel.CreateUnbounded(); // Set the hub feature before doing anything else. This stores // all the relevant state for a SignalR Hub connection. @@ -72,8 +72,9 @@ namespace Microsoft.AspNetCore.SignalR { while (await output.In.WaitToReadAsync()) { - while (output.In.TryRead(out var buffer)) + while (output.In.TryRead(out var hubMessage)) { + var buffer = connectionContext.Protocol.WriteToArray(hubMessage); buffer = encoder.Encode(buffer); while (await connection.Transport.Out.WaitToWriteAsync()) @@ -298,11 +299,9 @@ namespace Microsoft.AspNetCore.SignalR private async Task SendMessageAsync(HubConnectionContext connection, IHubProtocol protocol, HubMessage hubMessage) { - var payload = protocol.WriteToArray(hubMessage); - while (await connection.Output.WaitToWriteAsync()) { - if (connection.Output.TryWrite(payload)) + if (connection.Output.TryWrite(hubMessage)) { return; } diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/Internal/DefaultHubProtocolResolverTests.cs b/test/Microsoft.AspNetCore.SignalR.Tests/Internal/DefaultHubProtocolResolverTests.cs index 1bb206a1db..fc0defc8ad 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/Internal/DefaultHubProtocolResolverTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/Internal/DefaultHubProtocolResolverTests.cs @@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.SignalR.Common.Protocol.Tests [MemberData(nameof(HubProtocols))] public void DefaultHubProtocolResolverTestsCanCreateSupportedProtocols(IHubProtocol protocol) { - var mockConnection = new Mock(Channel.CreateUnbounded().Out, new Mock().Object); + var mockConnection = new Mock(Channel.CreateUnbounded().Out, new Mock().Object); Assert.IsType( protocol.GetType(), new DefaultHubProtocolResolver().GetProtocol(protocol.Name, mockConnection.Object)); @@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.SignalR.Common.Protocol.Tests [InlineData("dummy")] public void DefaultHubProtocolResolverThrowsForNotSupportedProtocol(string protocolName) { - var mockConnection = new Mock(Channel.CreateUnbounded().Out, new Mock().Object); + var mockConnection = new Mock(Channel.CreateUnbounded().Out, new Mock().Object); var exception = Assert.Throws( () => new DefaultHubProtocolResolver().GetProtocol(protocolName, mockConnection.Object));