Skip to content

Commit ea81b37

Browse files
committed
Allow control over websocket accept.
1 parent 1dad63c commit ea81b37

File tree

4 files changed

+18
-9
lines changed

4 files changed

+18
-9
lines changed

example/Startup.cs

+7
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
2626
var handler = WebSocketHandler.CreateFor<ChatController>(app.ApplicationServices);
2727
a.Run(handler.HandleRequest);
2828
});
29+
30+
app.Map("/ws-my", a =>
31+
{
32+
var handler = WebSocketHandler.CreateFor<MyController>(app.ApplicationServices);
33+
a.Run(handler.HandleRequest);
34+
});
35+
2936
}
3037
}
3138
}

src/AWebsocketController.cs

+7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
using System.Net.WebSockets;
22
using System.Threading.Tasks;
3+
using Microsoft.AspNetCore.Http;
34

45
namespace TimoStamm.WebSockets.Controller
56
{
67
public abstract class AWebsocketController : IWebsocketController
78
{
9+
public async Task<Client> OnWebSocketRequest(HttpContext context)
10+
{
11+
var socket = await context.WebSockets.AcceptWebSocketAsync();
12+
return new Client(socket, context);
13+
}
14+
815
public virtual Task OnOpen(Client client)
916
{
1017
return Task.CompletedTask;

src/IWebsocketController.cs

+2-7
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
11
using System.Net.WebSockets;
22
using System.Threading.Tasks;
3+
using Microsoft.AspNetCore.Http;
34

45
namespace TimoStamm.WebSockets.Controller
56
{
6-
7-
87
public interface IWebsocketController
98
{
9+
Task<Client> OnWebSocketRequest(HttpContext context);
1010

1111
Task OnOpen(Client client);
1212

13-
1413
Task OnTextMessage(Client client, string text);
1514

16-
1715
Task OnBinaryMessage(Client client, byte[] bytes);
1816

19-
2017
Task OnClose(Client client, WebSocketCloseStatus closeStatus, string closeStatusDescription);
21-
2218
}
23-
2419
}

src/WebSocketHandler.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ public async Task HandleRequest(HttpContext context)
4545
}
4646

4747
var cancel = context.RequestAborted;
48-
var socket = await context.WebSockets.AcceptWebSocketAsync();
49-
var client = new Client(socket, context);
48+
var client = await _controller.OnWebSocketRequest(context);
49+
var socket = client.WebSocket;
5050

5151
_clients.TryAdd(context.TraceIdentifier, client);
5252

0 commit comments

Comments
 (0)