diff --git a/build/dependencies.props b/build/dependencies.props
index 9037161b08..831c3b89e8 100644
--- a/build/dependencies.props
+++ b/build/dependencies.props
@@ -3,23 +3,24 @@
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
- 2.1.0-preview1-15651
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 0.5.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
- 2.1.0-preview1-27965
+ 2.1.0-preview2-15684
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 0.5.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
+ 2.1.0-preview2-28183
2.0.0
- 2.1.0-preview1-26016-05
+ 2.1.0-preview1-26122-01
15.3.0
4.5.0-preview1-26119-06
2.3.1
diff --git a/korebuild-lock.txt b/korebuild-lock.txt
index 2146d006d7..1ae5d69845 100644
--- a/korebuild-lock.txt
+++ b/korebuild-lock.txt
@@ -1,2 +1,2 @@
-version:2.1.0-preview1-15661
-commithash:c9349d4c8a495d3085d9b879214d80f2f45e2193
+version:2.1.0-preview2-15684
+commithash:308af8e3279892aad7f189ffbddd3ff9a60970d3
diff --git a/samples/EchoApp/Properties/launchSettings.json b/samples/EchoApp/Properties/launchSettings.json
index a9b371ff56..fba441af3d 100644
--- a/samples/EchoApp/Properties/launchSettings.json
+++ b/samples/EchoApp/Properties/launchSettings.json
@@ -3,7 +3,7 @@
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
- "applicationUrl": "http://localhost:3159/",
+ "applicationUrl": "http://localhost:62225/",
"sslPort": 0
}
},
diff --git a/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs b/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs
index d9653c1051..eba9597cd5 100644
--- a/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs
+++ b/src/Microsoft.AspNetCore.WebSockets/WebSocketMiddleware.cs
@@ -116,6 +116,7 @@ namespace Microsoft.AspNetCore.WebSockets
{
_context.Response.Headers[headerPair.Key] = headerPair.Value;
}
+
Stream opaqueTransport = await _upgradeFeature.UpgradeAsync(); // Sets status code to 101
return WebSocketProtocol.CreateFromStream(opaqueTransport, isServer: true, subProtocol: subProtocol, keepAliveInterval: keepAliveInterval);
diff --git a/test/Microsoft.AspNetCore.WebSockets.Test/KestrelWebSocketHelpers.cs b/test/Microsoft.AspNetCore.WebSockets.Test/KestrelWebSocketHelpers.cs
index 646286183a..77ec387c10 100644
--- a/test/Microsoft.AspNetCore.WebSockets.Test/KestrelWebSocketHelpers.cs
+++ b/test/Microsoft.AspNetCore.WebSockets.Test/KestrelWebSocketHelpers.cs
@@ -7,12 +7,14 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.DependencyInjection;
namespace Microsoft.AspNetCore.WebSockets.Test
{
public class KestrelWebSocketHelpers
{
- public static IDisposable CreateServer(Func app)
+ public static IDisposable CreateServer(ILoggerFactory loggerFactory, Func app)
{
Action startup = builder =>
{
@@ -46,6 +48,7 @@ namespace Microsoft.AspNetCore.WebSockets.Test
config["server.urls"] = "http://localhost:54321";
var host = new WebHostBuilder()
+ .ConfigureServices(s => s.AddSingleton(loggerFactory))
.UseConfiguration(config)
.UseKestrel()
.Configure(startup)
diff --git a/test/Microsoft.AspNetCore.WebSockets.Test/Microsoft.AspNetCore.WebSockets.Test.csproj b/test/Microsoft.AspNetCore.WebSockets.Test/Microsoft.AspNetCore.WebSockets.Test.csproj
index c85c41eb0e..5e7f2eb67e 100644
--- a/test/Microsoft.AspNetCore.WebSockets.Test/Microsoft.AspNetCore.WebSockets.Test.csproj
+++ b/test/Microsoft.AspNetCore.WebSockets.Test/Microsoft.AspNetCore.WebSockets.Test.csproj
@@ -9,6 +9,7 @@
+
diff --git a/test/Microsoft.AspNetCore.WebSockets.Test/WebSocketMiddlewareTests.cs b/test/Microsoft.AspNetCore.WebSockets.Test/WebSocketMiddlewareTests.cs
index cb0d8ec052..0f60b1d90d 100644
--- a/test/Microsoft.AspNetCore.WebSockets.Test/WebSocketMiddlewareTests.cs
+++ b/test/Microsoft.AspNetCore.WebSockets.Test/WebSocketMiddlewareTests.cs
@@ -7,27 +7,36 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Testing.xunit;
+using Microsoft.Extensions.Logging.Testing;
using Xunit;
+using Xunit.Abstractions;
namespace Microsoft.AspNetCore.WebSockets.Test
{
- public class WebSocketMiddlewareTests
+ public class WebSocketMiddlewareTests : LoggedTest
{
private static string ClientAddress = "ws://localhost:54321/";
+ public WebSocketMiddlewareTests(ITestOutputHelper output) : base(output)
+ {
+ }
+
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task Connect_Success()
{
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
- }))
- {
- using (var client = new ClientWebSocket())
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ }
}
}
}
@@ -36,27 +45,30 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task NegotiateSubProtocol_Success()
{
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- Assert.Equal("alpha, bravo, charlie", context.Request.Headers["Sec-WebSocket-Protocol"]);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync("Bravo");
- }))
- {
- using (var client = new ClientWebSocket())
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- client.Options.AddSubProtocol("alpha");
- client.Options.AddSubProtocol("bravo");
- client.Options.AddSubProtocol("charlie");
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
-
- // The Windows version of ClientWebSocket uses the casing from the header (Bravo)
- // However, the Managed version seems match the header against the list generated by
- // the AddSubProtocol calls (case-insensitively) and then use the version from
- // that list as the value for SubProtocol. This is fine, but means we need to ignore case here.
- // We could update our AddSubProtocols above to the same case but I think it's better to
- // ensure this behavior is codified by this test.
- Assert.Equal("Bravo", client.SubProtocol, ignoreCase: true);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ Assert.Equal("alpha, bravo, charlie", context.Request.Headers["Sec-WebSocket-Protocol"]);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync("Bravo");
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ client.Options.AddSubProtocol("alpha");
+ client.Options.AddSubProtocol("bravo");
+ client.Options.AddSubProtocol("charlie");
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+
+ // The Windows version of ClientWebSocket uses the casing from the header (Bravo)
+ // However, the Managed version seems match the header against the list generated by
+ // the AddSubProtocol calls (case-insensitively) and then use the version from
+ // that list as the value for SubProtocol. This is fine, but means we need to ignore case here.
+ // We could update our AddSubProtocols above to the same case but I think it's better to
+ // ensure this behavior is codified by this test.
+ Assert.Equal("Bravo", client.SubProtocol, ignoreCase: true);
+ }
}
}
}
@@ -65,23 +77,26 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task SendEmptyData_Success()
{
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- var serverBuffer = new byte[0];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(0, result.Count);
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- }))
- {
- using (var client = new ClientWebSocket())
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- var orriginalData = new byte[0];
- await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+
+ var serverBuffer = new byte[0];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(0, result.Count);
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ var orriginalData = new byte[0];
+ await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }
}
}
}
@@ -90,24 +105,27 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task SendShortData_Success()
{
- var orriginalData = Encoding.UTF8.GetBytes("Hello World");
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- var serverBuffer = new byte[orriginalData.Length];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(orriginalData.Length, result.Count);
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- Assert.Equal(orriginalData, serverBuffer);
- }))
- {
- using (var client = new ClientWebSocket())
+ var orriginalData = Encoding.UTF8.GetBytes("Hello World");
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+
+ var serverBuffer = new byte[orriginalData.Length];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(orriginalData.Length, result.Count);
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ Assert.Equal(orriginalData, serverBuffer);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }
}
}
}
@@ -116,24 +134,27 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task SendMediumData_Success()
{
- var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130));
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- var serverBuffer = new byte[orriginalData.Length];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(orriginalData.Length, result.Count);
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- Assert.Equal(orriginalData, serverBuffer);
- }))
- {
- using (var client = new ClientWebSocket())
+ var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130));
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+
+ var serverBuffer = new byte[orriginalData.Length];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(orriginalData.Length, result.Count);
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ Assert.Equal(orriginalData, serverBuffer);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }
}
}
}
@@ -142,36 +163,39 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task SendLongData_Success()
{
- var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF));
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- var serverBuffer = new byte[orriginalData.Length];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- int intermediateCount = result.Count;
- Assert.False(result.EndOfMessage);
- Assert.Equal(WebSocketMessageType.Text, result.MessageType);
-
- result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer, intermediateCount, orriginalData.Length - intermediateCount), CancellationToken.None);
- intermediateCount += result.Count;
- Assert.False(result.EndOfMessage);
- Assert.Equal(WebSocketMessageType.Text, result.MessageType);
-
- result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer, intermediateCount, orriginalData.Length - intermediateCount), CancellationToken.None);
- intermediateCount += result.Count;
- Assert.True(result.EndOfMessage);
- Assert.Equal(orriginalData.Length, intermediateCount);
- Assert.Equal(WebSocketMessageType.Text, result.MessageType);
-
- Assert.Equal(orriginalData, serverBuffer);
- }))
- {
- using (var client = new ClientWebSocket())
+ var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF));
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+
+ var serverBuffer = new byte[orriginalData.Length];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
+ int intermediateCount = result.Count;
+ Assert.False(result.EndOfMessage);
+ Assert.Equal(WebSocketMessageType.Text, result.MessageType);
+
+ result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer, intermediateCount, orriginalData.Length - intermediateCount), CancellationToken.None);
+ intermediateCount += result.Count;
+ Assert.False(result.EndOfMessage);
+ Assert.Equal(WebSocketMessageType.Text, result.MessageType);
+
+ result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer, intermediateCount, orriginalData.Length - intermediateCount), CancellationToken.None);
+ intermediateCount += result.Count;
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(orriginalData.Length, intermediateCount);
+ Assert.Equal(WebSocketMessageType.Text, result.MessageType);
+
+ Assert.Equal(orriginalData, serverBuffer);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }
}
}
}
@@ -180,42 +204,45 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task SendFragmentedData_Success()
{
- var orriginalData = Encoding.UTF8.GetBytes("Hello World");
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- var serverBuffer = new byte[orriginalData.Length];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- Assert.False(result.EndOfMessage);
- Assert.Equal(2, result.Count);
- int totalReceived = result.Count;
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
-
- result = await webSocket.ReceiveAsync(
- new ArraySegment(serverBuffer, totalReceived, serverBuffer.Length - totalReceived), CancellationToken.None);
- Assert.False(result.EndOfMessage);
- Assert.Equal(2, result.Count);
- totalReceived += result.Count;
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
-
- result = await webSocket.ReceiveAsync(
- new ArraySegment(serverBuffer, totalReceived, serverBuffer.Length - totalReceived), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(7, result.Count);
- totalReceived += result.Count;
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
-
- Assert.Equal(orriginalData, serverBuffer);
- }))
- {
- using (var client = new ClientWebSocket())
+ var orriginalData = Encoding.UTF8.GetBytes("Hello World");
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- await client.SendAsync(new ArraySegment(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
- await client.SendAsync(new ArraySegment(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
- await client.SendAsync(new ArraySegment(orriginalData, 4, 7), WebSocketMessageType.Binary, true, CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+
+ var serverBuffer = new byte[orriginalData.Length];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
+ Assert.False(result.EndOfMessage);
+ Assert.Equal(2, result.Count);
+ int totalReceived = result.Count;
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+
+ result = await webSocket.ReceiveAsync(
+ new ArraySegment(serverBuffer, totalReceived, serverBuffer.Length - totalReceived), CancellationToken.None);
+ Assert.False(result.EndOfMessage);
+ Assert.Equal(2, result.Count);
+ totalReceived += result.Count;
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+
+ result = await webSocket.ReceiveAsync(
+ new ArraySegment(serverBuffer, totalReceived, serverBuffer.Length - totalReceived), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(7, result.Count);
+ totalReceived += result.Count;
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+
+ Assert.Equal(orriginalData, serverBuffer);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ await client.SendAsync(new ArraySegment(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
+ await client.SendAsync(new ArraySegment(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
+ await client.SendAsync(new ArraySegment(orriginalData, 4, 7), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }
}
}
}
@@ -224,24 +251,27 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task ReceiveShortData_Success()
{
- var orriginalData = Encoding.UTF8.GetBytes("Hello World");
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
- }))
- {
- using (var client = new ClientWebSocket())
+ var orriginalData = Encoding.UTF8.GetBytes("Hello World");
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- var clientBuffer = new byte[orriginalData.Length];
- var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(orriginalData.Length, result.Count);
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- Assert.Equal(orriginalData, clientBuffer);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+
+ await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ var clientBuffer = new byte[orriginalData.Length];
+ var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(orriginalData.Length, result.Count);
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ Assert.Equal(orriginalData, clientBuffer);
+ }
}
}
}
@@ -250,24 +280,27 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task ReceiveMediumData_Success()
{
- var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130));
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
- }))
- {
- using (var client = new ClientWebSocket())
+ var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130));
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- var clientBuffer = new byte[orriginalData.Length];
- var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(orriginalData.Length, result.Count);
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- Assert.Equal(orriginalData, clientBuffer);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+
+ await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ var clientBuffer = new byte[orriginalData.Length];
+ var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(orriginalData.Length, result.Count);
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ Assert.Equal(orriginalData, clientBuffer);
+ }
}
}
}
@@ -276,32 +309,35 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task ReceiveLongData()
{
- var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF));
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
- }))
- {
- using (var client = new ClientWebSocket())
+ var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF));
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- var clientBuffer = new byte[orriginalData.Length];
- WebSocketReceiveResult result;
- int receivedCount = 0;
- do
- {
- result = await client.ReceiveAsync(new ArraySegment(clientBuffer, receivedCount, clientBuffer.Length - receivedCount), CancellationToken.None);
- receivedCount += result.Count;
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- }
- while (!result.EndOfMessage);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
- Assert.Equal(orriginalData.Length, receivedCount);
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- Assert.Equal(orriginalData, clientBuffer);
+ await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ var clientBuffer = new byte[orriginalData.Length];
+ WebSocketReceiveResult result;
+ int receivedCount = 0;
+ do
+ {
+ result = await client.ReceiveAsync(new ArraySegment(clientBuffer, receivedCount, clientBuffer.Length - receivedCount), CancellationToken.None);
+ receivedCount += result.Count;
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ }
+ while (!result.EndOfMessage);
+
+ Assert.Equal(orriginalData.Length, receivedCount);
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ Assert.Equal(orriginalData, clientBuffer);
+ }
}
}
}
@@ -310,42 +346,45 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task ReceiveFragmentedData_Success()
{
- var orriginalData = Encoding.UTF8.GetBytes("Hello World");
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- await webSocket.SendAsync(new ArraySegment(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
- await webSocket.SendAsync(new ArraySegment(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
- await webSocket.SendAsync(new ArraySegment(orriginalData, 4, 7), WebSocketMessageType.Binary, true, CancellationToken.None);
- }))
- {
- using (var client = new ClientWebSocket())
+ var orriginalData = Encoding.UTF8.GetBytes("Hello World");
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- var clientBuffer = new byte[orriginalData.Length];
- var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
- Assert.False(result.EndOfMessage);
- Assert.Equal(2, result.Count);
- int totalReceived = result.Count;
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
- result = await client.ReceiveAsync(
- new ArraySegment(clientBuffer, totalReceived, clientBuffer.Length - totalReceived), CancellationToken.None);
- Assert.False(result.EndOfMessage);
- Assert.Equal(2, result.Count);
- totalReceived += result.Count;
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ await webSocket.SendAsync(new ArraySegment(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
+ await webSocket.SendAsync(new ArraySegment(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
+ await webSocket.SendAsync(new ArraySegment(orriginalData, 4, 7), WebSocketMessageType.Binary, true, CancellationToken.None);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ var clientBuffer = new byte[orriginalData.Length];
+ var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
+ Assert.False(result.EndOfMessage);
+ Assert.Equal(2, result.Count);
+ int totalReceived = result.Count;
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- result = await client.ReceiveAsync(
- new ArraySegment(clientBuffer, totalReceived, clientBuffer.Length - totalReceived), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(7, result.Count);
- totalReceived += result.Count;
- Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+ result = await client.ReceiveAsync(
+ new ArraySegment(clientBuffer, totalReceived, clientBuffer.Length - totalReceived), CancellationToken.None);
+ Assert.False(result.EndOfMessage);
+ Assert.Equal(2, result.Count);
+ totalReceived += result.Count;
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
- Assert.Equal(orriginalData, clientBuffer);
+ result = await client.ReceiveAsync(
+ new ArraySegment(clientBuffer, totalReceived, clientBuffer.Length - totalReceived), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(7, result.Count);
+ totalReceived += result.Count;
+ Assert.Equal(WebSocketMessageType.Binary, result.MessageType);
+
+ Assert.Equal(orriginalData, clientBuffer);
+ }
}
}
}
@@ -354,27 +393,30 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task SendClose_Success()
{
- string closeDescription = "Test Closed";
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- var serverBuffer = new byte[1024];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(0, result.Count);
- Assert.Equal(WebSocketMessageType.Close, result.MessageType);
- Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
- Assert.Equal(closeDescription, result.CloseStatusDescription);
- }))
- {
- using (var client = new ClientWebSocket())
+ string closeDescription = "Test Closed";
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- await client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
- Assert.Equal(WebSocketState.CloseSent, client.State);
+ var serverBuffer = new byte[1024];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(0, result.Count);
+ Assert.Equal(WebSocketMessageType.Close, result.MessageType);
+ Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
+ Assert.Equal(closeDescription, result.CloseStatusDescription);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ await client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
+
+ Assert.Equal(WebSocketState.CloseSent, client.State);
+ }
}
}
}
@@ -383,27 +425,30 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task ReceiveClose_Success()
{
- string closeDescription = "Test Closed";
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
- }))
- {
- using (var client = new ClientWebSocket())
+ string closeDescription = "Test Closed";
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- var clientBuffer = new byte[1024];
- var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(0, result.Count);
- Assert.Equal(WebSocketMessageType.Close, result.MessageType);
- Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
- Assert.Equal(closeDescription, result.CloseStatusDescription);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
- Assert.Equal(WebSocketState.CloseReceived, client.State);
+ await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ var clientBuffer = new byte[1024];
+ var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(0, result.Count);
+ Assert.Equal(WebSocketMessageType.Close, result.MessageType);
+ Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
+ Assert.Equal(closeDescription, result.CloseStatusDescription);
+
+ Assert.Equal(WebSocketState.CloseReceived, client.State);
+ }
}
}
}
@@ -412,29 +457,32 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task CloseFromOpen_Success()
{
- string closeDescription = "Test Closed";
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- var serverBuffer = new byte[1024];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(0, result.Count);
- Assert.Equal(WebSocketMessageType.Close, result.MessageType);
- Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
- Assert.Equal(closeDescription, result.CloseStatusDescription);
-
- await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
- }))
- {
- using (var client = new ClientWebSocket())
+ string closeDescription = "Test Closed";
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- await client.CloseAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
- Assert.Equal(WebSocketState.Closed, client.State);
+ var serverBuffer = new byte[1024];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(0, result.Count);
+ Assert.Equal(WebSocketMessageType.Close, result.MessageType);
+ Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
+ Assert.Equal(closeDescription, result.CloseStatusDescription);
+
+ await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ await client.CloseAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
+
+ Assert.Equal(WebSocketState.Closed, client.State);
+ }
}
}
}
@@ -443,31 +491,34 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task CloseFromCloseSent_Success()
{
- string closeDescription = "Test Closed";
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- var serverBuffer = new byte[1024];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(0, result.Count);
- Assert.Equal(WebSocketMessageType.Close, result.MessageType);
- Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
- Assert.Equal(closeDescription, result.CloseStatusDescription);
-
- await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
- }))
- {
- using (var client = new ClientWebSocket())
+ string closeDescription = "Test Closed";
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- await client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
- Assert.Equal(WebSocketState.CloseSent, client.State);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
- await client.CloseAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
- Assert.Equal(WebSocketState.Closed, client.State);
+ var serverBuffer = new byte[1024];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(0, result.Count);
+ Assert.Equal(WebSocketMessageType.Close, result.MessageType);
+ Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
+ Assert.Equal(closeDescription, result.CloseStatusDescription);
+
+ await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ await client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
+ Assert.Equal(WebSocketState.CloseSent, client.State);
+
+ await client.CloseAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
+ Assert.Equal(WebSocketState.Closed, client.State);
+ }
}
}
}
@@ -476,39 +527,42 @@ namespace Microsoft.AspNetCore.WebSockets.Test
[OSSkipCondition(OperatingSystems.Windows, WindowsVersions.Win7, SkipReason = "No WebSockets Client for this platform")]
public async Task CloseFromCloseReceived_Success()
{
- string closeDescription = "Test Closed";
- using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
+ using (StartLog(out var loggerFactory))
{
- Assert.True(context.WebSockets.IsWebSocketRequest);
- var webSocket = await context.WebSockets.AcceptWebSocketAsync();
-
- await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
-
- var serverBuffer = new byte[1024];
- var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
- Assert.True(result.EndOfMessage);
- Assert.Equal(0, result.Count);
- Assert.Equal(WebSocketMessageType.Close, result.MessageType);
- Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
- Assert.Equal(closeDescription, result.CloseStatusDescription);
- }))
- {
- using (var client = new ClientWebSocket())
+ string closeDescription = "Test Closed";
+ using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context =>
{
- await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
- var clientBuffer = new byte[1024];
- var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
+ Assert.True(context.WebSockets.IsWebSocketRequest);
+ var webSocket = await context.WebSockets.AcceptWebSocketAsync();
+
+ await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
+
+ var serverBuffer = new byte[1024];
+ var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None);
Assert.True(result.EndOfMessage);
Assert.Equal(0, result.Count);
Assert.Equal(WebSocketMessageType.Close, result.MessageType);
Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
Assert.Equal(closeDescription, result.CloseStatusDescription);
+ }))
+ {
+ using (var client = new ClientWebSocket())
+ {
+ await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None);
+ var clientBuffer = new byte[1024];
+ var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None);
+ Assert.True(result.EndOfMessage);
+ Assert.Equal(0, result.Count);
+ Assert.Equal(WebSocketMessageType.Close, result.MessageType);
+ Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus);
+ Assert.Equal(closeDescription, result.CloseStatusDescription);
- Assert.Equal(WebSocketState.CloseReceived, client.State);
+ Assert.Equal(WebSocketState.CloseReceived, client.State);
- await client.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
+ await client.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
- Assert.Equal(WebSocketState.Closed, client.State);
+ Assert.Equal(WebSocketState.Closed, client.State);
+ }
}
}
}