React to WebSocket feature API changes.

This commit is contained in:
Chris Ross 2015-04-24 10:52:06 -07:00
parent f71d49744e
commit 66b669aa22
5 changed files with 45 additions and 46 deletions

View File

@ -6,9 +6,9 @@ using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.WebSockets.Server namespace Microsoft.AspNet.WebSockets.Server
{ {
public class WebSocketAcceptContext : IWebSocketAcceptContext public class ExtendedWebSocketAcceptContext : WebSocketAcceptContext
{ {
public string SubProtocol { get; set; } public override string SubProtocol { get; set; }
public int? ReceiveBufferSize { get; set; } public int? ReceiveBufferSize { get; set; }
public TimeSpan? KeepAliveInterval { get; set; } public TimeSpan? KeepAliveInterval { get; set; }

View File

@ -73,13 +73,13 @@ namespace Microsoft.AspNet.WebSockets.Server
} }
} }
public async Task<WebSocket> AcceptAsync(IWebSocketAcceptContext acceptContext) public async Task<WebSocket> AcceptAsync(WebSocketAcceptContext acceptContext)
{ {
if (!IsWebSocketRequest) if (!IsWebSocketRequest)
{ {
throw new InvalidOperationException("Not a WebSocket request."); // TODO: LOC throw new InvalidOperationException("Not a WebSocket request."); // TODO: LOC
} }
string subProtocol = null; string subProtocol = null;
if (acceptContext != null) if (acceptContext != null)
{ {
@ -88,7 +88,7 @@ namespace Microsoft.AspNet.WebSockets.Server
TimeSpan keepAliveInterval = _options.KeepAliveInterval; TimeSpan keepAliveInterval = _options.KeepAliveInterval;
int receiveBufferSize = _options.ReceiveBufferSize; int receiveBufferSize = _options.ReceiveBufferSize;
var advancedAcceptContext = acceptContext as WebSocketAcceptContext; var advancedAcceptContext = acceptContext as ExtendedWebSocketAcceptContext;
if (advancedAcceptContext != null) if (advancedAcceptContext != null)
{ {
if (advancedAcceptContext.ReceiveBufferSize.HasValue) if (advancedAcceptContext.ReceiveBufferSize.HasValue)

View File

@ -3,7 +3,6 @@
"description": "ASP.NET 5 web socket middleware for use on top of opaque servers.", "description": "ASP.NET 5 web socket middleware for use on top of opaque servers.",
"dependencies": { "dependencies": {
"Microsoft.AspNet.Http": "1.0.0-*", "Microsoft.AspNet.Http": "1.0.0-*",
"Microsoft.AspNet.Http.Interfaces": { "version": "1.0.0-*", "type": "build" },
"Microsoft.AspNet.WebSockets.Protocol": "1.0.0-*" "Microsoft.AspNet.WebSockets.Protocol": "1.0.0-*"
}, },
"frameworks": { "frameworks": {

View File

@ -25,10 +25,10 @@ namespace AutobahnTestServer
managedWebSocketsApp.Use(async (context, next) => managedWebSocketsApp.Use(async (context, next) =>
{ {
if (context.IsWebSocketRequest) if (context.WebSockets.IsWebSocketRequest)
{ {
Console.WriteLine("Echo: " + context.Request.Path); Console.WriteLine("Echo: " + context.Request.Path);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await Echo(webSocket); await Echo(webSocket);
return; return;
} }
@ -40,10 +40,10 @@ namespace AutobahnTestServer
{ {
nativeWebSocketsApp.Use(async (context, next) => nativeWebSocketsApp.Use(async (context, next) =>
{ {
if (context.IsWebSocketRequest) if (context.WebSockets.IsWebSocketRequest)
{ {
Console.WriteLine("Echo: " + context.Request.Path); Console.WriteLine("Echo: " + context.Request.Path);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await Echo(webSocket); await Echo(webSocket);
return; return;
} }

View File

@ -19,8 +19,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
{ {
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
})) }))
{ {
var client = new WebSocketClient(); var client = new WebSocketClient();
@ -35,9 +35,9 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
{ {
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
Assert.Equal("alpha, bravo, charlie", context.Request.Headers["Sec-WebSocket-Protocol"]); Assert.Equal("alpha, bravo, charlie", context.Request.Headers["Sec-WebSocket-Protocol"]);
var webSocket = await context.AcceptWebSocketAsync("Bravo"); var webSocket = await context.WebSockets.AcceptWebSocketAsync("Bravo");
})) }))
{ {
var client = new WebSocketClient(); var client = new WebSocketClient();
@ -56,8 +56,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
{ {
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
var serverBuffer = new byte[0]; var serverBuffer = new byte[0];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None); var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None);
@ -81,8 +81,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes("Hello World"); var orriginalData = Encoding.UTF8.GetBytes("Hello World");
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
var serverBuffer = new byte[orriginalData.Length]; var serverBuffer = new byte[orriginalData.Length];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None); var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None);
@ -106,8 +106,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130)); var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130));
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
var serverBuffer = new byte[orriginalData.Length]; var serverBuffer = new byte[orriginalData.Length];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None); var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None);
@ -131,8 +131,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF)); var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF));
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
var serverBuffer = new byte[orriginalData.Length]; var serverBuffer = new byte[orriginalData.Length];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None); var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None);
@ -168,8 +168,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes("Hello World"); var orriginalData = Encoding.UTF8.GetBytes("Hello World");
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
var serverBuffer = new byte[orriginalData.Length]; var serverBuffer = new byte[orriginalData.Length];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None); var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None);
@ -211,8 +211,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes("Hello World"); var orriginalData = Encoding.UTF8.GetBytes("Hello World");
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
})) }))
@ -235,8 +235,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes("Hello World"); var orriginalData = Encoding.UTF8.GetBytes("Hello World");
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
})) }))
@ -260,8 +260,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130)); var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130));
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
})) }))
@ -285,8 +285,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF)); var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF));
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
})) }))
@ -318,8 +318,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF)); var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF));
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); await webSocket.SendAsync(new ArraySegment<byte>(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None);
})) }))
@ -343,8 +343,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
var orriginalData = Encoding.UTF8.GetBytes("Hello World"); var orriginalData = Encoding.UTF8.GetBytes("Hello World");
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await webSocket.SendAsync(new ArraySegment<byte>(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None); await webSocket.SendAsync(new ArraySegment<byte>(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
await webSocket.SendAsync(new ArraySegment<byte>(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None); await webSocket.SendAsync(new ArraySegment<byte>(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None);
@ -386,8 +386,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
string closeDescription = "Test Closed"; string closeDescription = "Test Closed";
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
var serverBuffer = new byte[1024]; var serverBuffer = new byte[1024];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None); var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None);
@ -414,8 +414,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
string closeDescription = "Test Closed"; string closeDescription = "Test Closed";
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);
})) }))
@ -442,8 +442,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
string closeDescription = "Test Closed"; string closeDescription = "Test Closed";
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
var serverBuffer = new byte[1024]; var serverBuffer = new byte[1024];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None); var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None);
@ -472,8 +472,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
string closeDescription = "Test Closed"; string closeDescription = "Test Closed";
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
var serverBuffer = new byte[1024]; var serverBuffer = new byte[1024];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None); var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(serverBuffer), CancellationToken.None);
@ -504,8 +504,8 @@ namespace Microsoft.AspNet.WebSockets.Client.Test
string closeDescription = "Test Closed"; string closeDescription = "Test Closed";
using (var server = KestrelWebSocketHelpers.CreateServer(async context => using (var server = KestrelWebSocketHelpers.CreateServer(async context =>
{ {
Assert.True(context.IsWebSocketRequest); Assert.True(context.WebSockets.IsWebSocketRequest);
var webSocket = await context.AcceptWebSocketAsync(); var webSocket = await context.WebSockets.AcceptWebSocketAsync();
await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None);