Skip to content

Commit 4a22cf3

Browse files
committed
Adds onOpenHandler
1 parent 2af82e6 commit 4a22cf3

3 files changed

Lines changed: 22 additions & 3 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using Microsoft.AspNetCore.Http;
2+
using yawaflua.WebSockets.Models.Interfaces;
3+
4+
namespace yawaflua.WebSockets.Core;
5+
6+
public class WebSocketConfig
7+
{
8+
public Func<IWebSocket, HttpContext, Task>? OnOpenHandler { get; set; } = null;
9+
10+
}

yawaflua.WebSockets/Core/WebSocketRouter.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@ public class WebSocketRouter
1717
internal static readonly List<IWebSocketClient> Clients = new();
1818
private readonly IServiceProvider _serviceProvider;
1919
private readonly ILogger<WebSocketRouter> _logger;
20-
21-
public WebSocketRouter(IServiceProvider serviceProvider, ILogger<WebSocketRouter> logger)
20+
private readonly WebSocketConfig WebSocketConfig;
21+
public WebSocketRouter(IServiceProvider serviceProvider, ILogger<WebSocketRouter> logger, WebSocketConfig webSocketConfig)
2222
{
2323
_serviceProvider = serviceProvider;
2424
this._logger = logger;
25+
WebSocketConfig = webSocketConfig;
2526
DiscoverHandlers();
2627
Task.Run(() =>
2728
{
@@ -146,6 +147,13 @@ await Task.Run(async () =>
146147
{
147148
var client = new WebSocketClient(context, webSocket, path);
148149
Clients.Add(client);
150+
151+
await Task.Run(async () =>
152+
{
153+
if (WebSocketConfig.OnOpenHandler != null)
154+
await WebSocketConfig.OnOpenHandler((webSocket as IWebSocket)!, context);
155+
}, cts);
156+
149157
var buffer = new byte[1024 * 4];
150158
while (webSocket.State == WebSocketState.Open)
151159
{

yawaflua.WebSockets/ServiceBindings.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ namespace yawaflua.WebSockets;
88

99
public static class ServiceBindings
1010
{
11-
public static IServiceCollection SettingUpWebSockets(this IServiceCollection isc)
11+
public static IServiceCollection SettingUpWebSockets(this IServiceCollection isc, Action<WebSocketOptions>? socketOptions = null)
1212
{
1313
isc.AddSingleton<WebSocketRouter>();
1414
isc.AddScoped<IWebSocketManager, WebSocketManager>();
1515
isc.AddSingleton<WebSocketMiddleware>();
16+
isc.Configure("WebSocketOptions", socketOptions);
1617
return isc;
1718
}
1819

0 commit comments

Comments
 (0)